]>
Commit | Line | Data |
---|---|---|
4df6a1b8 C |
1 | # Docker guide |
2 | ||
ef48a0d5 BB |
3 | You can quickly get a server running using Docker. You need to have |
4 | [docker](https://www.docker.com/community-edition) and | |
5 | [docker-compose](https://docs.docker.com/compose/install/) installed. | |
4df6a1b8 | 6 | |
ef48a0d5 BB |
7 | ## Production |
8 | ||
b44a9630 | 9 | ### Install |
4df6a1b8 | 10 | |
6454845e C |
11 | **PeerTube does not support webserver host change**. Keep in mind your domain name is definitive after your first PeerTube start. |
12 | ||
ef48a0d5 BB |
13 | PeerTube needs a PostgreSQL and a Redis instance to work correctly. If you want |
14 | to quickly set up a full environment, either for trying the service or in | |
15 | production, you can use a `docker-compose` setup. | |
4df6a1b8 | 16 | |
e962e1c3 | 17 | #### Go to your peertube workdir |
f83e339b | 18 | ```shell |
e962e1c3 | 19 | cd /your/peertube/directory |
b44a9630 C |
20 | ``` |
21 | ||
e962e1c3 | 22 | #### Create the reverse proxy configuration directory |
b44a9630 | 23 | |
f83e339b | 24 | ```shell |
e962e1c3 | 25 | mkdir -p ./docker-volume/traefik |
b44a9630 C |
26 | ``` |
27 | ||
e962e1c3 | 28 | #### Get the latest reverse proxy configuration |
4df6a1b8 | 29 | |
f83e339b | 30 | ```shell |
5a390259 | 31 | curl https://raw.githubusercontent.com/chocobozzz/PeerTube/master/support/docker/production/config/traefik.toml > ./docker-volume/traefik/traefik.toml |
b44a9630 C |
32 | ``` |
33 | ||
e962e1c3 K |
34 | View the source of the file you're about to download: [traefik.toml](https://github.com/Chocobozzz/PeerTube/blob/master/support/docker/production/config/traefik.toml) |
35 | ||
36 | #### Create Let's Encrypt ACME certificates as JSON file | |
4df6a1b8 | 37 | |
f83e339b | 38 | ```shell |
e962e1c3 | 39 | touch ./docker-volume/traefik/acme.json |
ef48a0d5 | 40 | ``` |
e962e1c3 K |
41 | Needs to have file mode 600: |
42 | ```shell | |
43 | chmod 600 ./docker-volume/traefik/acme.json | |
44 | ``` | |
45 | ||
46 | #### Get the latest Compose file | |
47 | ||
48 | ```shell | |
5a390259 | 49 | curl https://raw.githubusercontent.com/chocobozzz/PeerTube/master/support/docker/production/docker-compose.yml > docker-compose.yml |
e962e1c3 K |
50 | ``` |
51 | ||
52 | View the source of the file you're about to download: [docker-compose.yml](https://github.com/Chocobozzz/PeerTube/blob/master/support/docker/production/docker-compose.yml) | |
53 | ||
54 | ||
55 | #### Get the latest env_file | |
56 | ||
57 | ```shell | |
5a390259 | 58 | curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env > .env |
e962e1c3 K |
59 | ``` |
60 | ||
61 | View the source of the file you're about to download: [.env](https://github.com/Chocobozzz/PeerTube/blob/master/support/docker/production/.env) | |
62 | ||
63 | #### Update the reverse proxy configuration | |
64 | ||
65 | ```shell | |
66 | vim ./docker-volume/traefik/traefik.toml | |
67 | ``` | |
68 | ||
69 | ~~You must replace `<MY EMAIL ADDRESS>` and `<MY DOMAIN>` to enable Let's Encrypt SSL Certificates creation.~~ Now included in `.env` file with `TRAEFIK_ACME_EMAIL` and `TRAEFIK_ACME_DOMAINS` variables used through traefik service command value of `docker-compose.yml` file. | |
70 | ||
71 | More at: https://docs.traefik.io/v1.7 | |
72 | ||
73 | #### Tweak the `docker-compose.yml` file there according to your needs | |
74 | ||
75 | ```shell | |
76 | vim ./docker-compose.yml | |
77 | ``` | |
78 | ||
79 | #### Then tweak the `.env` file to change the environment variables | |
80 | ||
81 | ```shell | |
82 | vim ./.env | |
83 | ``` | |
84 | In the downloaded example [.env](https://github.com/Chocobozzz/PeerTube/blob/master/support/docker/production/.env), you must replace: | |
85 | - `<MY POSTGRES USERNAME>` | |
86 | - `<MY POSTGRES PASSWORD>` | |
87 | - `<MY POSTGRES DB>` | |
88 | - `<MY DOMAIN>` without 'https://' | |
89 | - `<MY EMAIL ADDRESS>` | |
ef48a0d5 BB |
90 | |
91 | Other environment variables are used in | |
e962e1c3 | 92 | [/support/docker/production/config/custom-environment-variables.yaml](https://github.com/Chocobozzz/PeerTube/blob/master/support/docker/production/config/custom-environment-variables.yaml) and can be |
ef48a0d5 BB |
93 | intuited from usage. |
94 | ||
e962e1c3 K |
95 | #### Testing local Docker setup |
96 | ||
97 | To test locally your Docker setup, you must add your domain (`<MY DOMAIN>`) in `/etc/hosts`: | |
98 | ``` | |
99 | 127.0.0.1 localhost mydomain.tld | |
100 | ``` | |
101 | ||
102 | #### You can use the regular `up` command to set it up | |
f83e339b FP |
103 | |
104 | ```shell | |
e962e1c3 | 105 | docker-compose up |
f83e339b | 106 | ``` |
76d5770b L |
107 | ### Obtaining Your Automatically Generated Admin Credentials |
108 | Now that you've installed your PeerTube instance you'll want to grep your peertube container's logs for the `root` password. | |
109 | You're going to want to run `docker-compose logs peertube | grep -A1 root` to search the log output for your new PeerTube's instance admin credentials which will look something like this. | |
110 | ```BASH | |
111 | user@s:~/peertube|master⚡ ⇒ docker-compose logs peertube | grep -A1 root | |
112 | ||
113 | peertube_1 | [example.com:443] 2019-11-16 04:26:06.082 info: Username: root | |
114 | peertube_1 | [example.com:443] 2019-11-16 04:26:06.083 info: User password: abcdefghijklmnop | |
115 | ``` | |
ef48a0d5 | 116 | |
cd7ec86f | 117 | ### Obtaining Your Automatically Generated DKIM DNS TXT Record |
118 | [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) signature sending and RSA keys generation are enabled by the default Postfix image `mwader/postfix-relay` with [OpenDKIM](http://www.opendkim.org/). | |
119 | Run `cat ./docker-volume/opendkim/keys/*/*.txt` to display your DKIM DNS TXT Record containing the public key to configure to your domain : | |
120 | ```BASH | |
121 | user@s:~/peertube|master⚡ ⇒ cat ./docker-volume/opendkim/keys/*/*.txt | |
122 | ||
123 | peertube._domainkey.mydomain.tld. IN TXT ( "v=DKIM1; h=sha256; k=rsa; " | |
124 | "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Dx7wLGPFVaxVQ4TGym/eF89aQ8oMxS9v5BCc26Hij91t2Ci8Fl12DHNVqZoIPGm+9tTIoDVDFEFrlPhMOZl8i4jU9pcFjjaIISaV2+qTa8uV1j3MyByogG8pu4o5Ill7zaySYFsYB++cHJ9pjbFSC42dddCYMfuVgrBsLNrvEi3dLDMjJF5l92Uu8YeswFe26PuHX3Avr261n" | |
125 | "j5joTnYwat4387VEUyGUnZ0aZxCERi+ndXv2/wMJ0tizq+a9+EgqIb+7lkUc2XciQPNuTujM25GhrQBEKznvHyPA6fHsFheymOuB763QpkmnQQLCxyLygAY9mE/5RY+5Q6J9oDOQIDAQAB" ) ; ----- DKIM key peertube for mydomain.tld | |
126 | ``` | |
127 | ||
57c36b27 C |
128 | ### What now? |
129 | ||
130 | See the production guide ["What now" section](/support/doc/production.md#what-now). | |
131 | ||
b44a9630 C |
132 | ### Upgrade |
133 | ||
e359e88b C |
134 | **Important:** Before upgrading, check you have all the `storage` fields in your [production.yaml file](/support/docker/production/config/production.yaml). |
135 | ||
b44a9630 C |
136 | Pull the latest images and rerun PeerTube: |
137 | ||
f83e339b | 138 | ```shell |
9007daff | 139 | $ cd /your/peertube/directory |
b44a9630 | 140 | $ docker-compose pull |
f83e339b | 141 | $ docker-compose up -d |
b44a9630 C |
142 | ``` |
143 | ||
b44a9630 C |
144 | ## Build your own Docker image |
145 | ||
f83e339b | 146 | ```shell |
b44a9630 C |
147 | $ git clone https://github.com/chocobozzz/PeerTube /tmp/peertube |
148 | $ cd /tmp/peertube | |
c82bf36a | 149 | $ docker build . -f ./support/docker/production/Dockerfile.buster |
b44a9630 C |
150 | ``` |
151 | ||
ef48a0d5 | 152 | ## Development |
4df6a1b8 | 153 | |
e962e1c3 | 154 | We don't have a Docker image for development. See [the CONTRIBUTING guide](https://github.com/Chocobozzz/PeerTube/blob/master/.github/CONTRIBUTING.md#develop) |
f83e339b | 155 | for more information on how you can hack PeerTube! |