aboutsummaryrefslogtreecommitdiffsponsor
path: root/README.md
blob: 6ac2e9126f2d9d4871c2463baa373696a00573df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Mirror

Mirror free and open-source projects you like with minimal effort.

Use this project as a service to keep a local or hosted copy of the projects
source code or their assets.

## Status

This project is in pre-alpha and under active development.  Expect rapid and
breaking changes.

## Requirements

The following applications are required on your system.

 - Golang >= 1.22.4
 - git
 - rsync

## Verification

Verify the project and its assets using the GPG Key included in the project.

```
gpg --import GPG-KEY
git commit verify-commit HEAD
```

To verify the projects vendored depnendencies:

```
go mod verify
```

## Building and Installation

### Slackware

You can create a package using the Slackbuild script provided with the project.

```
cd contrib/slackbuild
sudo sh *.SlackBuild
```

### Other Unix-like systems

Standard practice is to install under /usr/local/bin

```
sudo GOBIN=/usr/local/sbin go build ./cmd/...
```

## Configuration

Configuration is provided via json file format.

 - `min-interval` is the minimum time to wait before mirroring a project.
 - `max-interval` is the minimum time to wait before mirroring a project.
 - `mirrors` is the list of projects you want mirrored and how.
   - `rsync` for mirroring files.
   - `git` for mirroring project source code.
   - `github-assets` for mirroring Github project assets.

Refer to the following example.  Mirror will mirror each project at a random
interval between 1 and 24 hours.

```
{
  "min-interval": "1h",
  "max-interval": "24h",
  "mirrors": [
    {
      "method": "rsync",
      "from": "rsync://mirrors.kernel.org/slackware/slackware64-15.0",
      "to": "/mirror/slackware/slackware64-15.0"
    },
    {
      "method": "rsync",
      "from": "rsync://mirrors.kernel.org/slackware/slackware-iso/slackware64-15.0-iso",
      "to": "/mirror/slackware/slackware64-15.0-iso"
    },
    {
      "method": "rsync",
      "from": "rsync://mirrors.kernel.org/slackware/slackware64-current",
      "to": "/mirror/slackware/slackware64-current"
    },
    {
      "method": "git",
      "from": "https://github.com/ytdl-org/youtube-dl",
      "to": "/srv/git/slackcoder/youtube-dl",
      "description": "Command-line program to download videos from YouTube.com and other video sites"
    },
    {
      "method": "github-assets",
      "from": "https://github.com/ytdl-org/youtube-dl",
      "to": "/mirror/youtube-dl"
    }
  ]
}
```