Add directions for trusted certificate generation under Docker

This commit is contained in:
Alecks Gates 2023-05-26 00:42:09 -05:00 committed by John Livingston
parent df249efd16
commit 862991e086

View File

@ -192,6 +192,112 @@ Normally you should now find the certificates in the configured folder.
Note: the first time you do this, you will have to reload Prosody. The easiest way to do this is to restart Peertube.
#### Method for the Docker case
This method works with the officially supported [Docker guide](https://docs.joinpeertube.org/install/docker) from PeerTube.
First, ensure you create a DNS entry for `room.your_instance.tld`, which points to your server.
You can use a CNAME entry (or an A entry and a AAAA entry).
This is necessary for Let's Encrypt to validate the domain for certificate generation.
Enter the directory where your `docker-compose.yml` file exists.
Open a shell in the certbot container:
```bash
docker exec -it certbot /bin/sh
```
Run certbot:
```bash
certbot
```
You will be presented with a series of prompts. Enter `2` for the authentication type:
```text
How would you like to authenticate with the ACME CA?
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
```
Enter the domain name `room.your_instance.tld`:
```text
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): room.your_instance.tld
```
Enter the directory where the PeerTube webserver serves requests for Let's Encrypt, `/var/www/certbot`:
```text
Input the webroot for <room.your_instance.tld>: (Enter 'c' to cancel): /var/www/certbot
```
You should see output like the following:
```text
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/room.your_instance.tld/fullchain.pem
Key is saved at: /etc/letsencrypt/live/room.your_instance.tld/privkey.pem
```
Run the below command inside the certbot container to give read access to the new certs and private keys to the peertube group.
*Note*: This will also make the files readable to the group with id 999 on the host system.
Check the groups on your system to assess this as a risk before running this command.
```bash
chown -R root:999 /etc/letsencrypt/live; \
chmod 750 /etc/letsencrypt/live; \
chown -R root:999 /etc/letsencrypt/archive; \
chmod 750 /etc/letsencrypt/archive; \
find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} \;
```
Exit the certbot container:
```bash
exit
```
Modify your `docker-compose.yml` file, changing the `entrypoint` line under the `certbot` service to the following.
This is the same as the above, but to be automatically executed after every certificate renewal.
```text
entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; chown -R root:999 /etc/letsencrypt/live; chmod 750 /etc/letsencrypt/live; chown -R root:999 /etc/letsencrypt/archive; chmod 750 /etc/letsencrypt/archive; find /etc/letsencrypt/ -name 'privkey*' -exec chmod 0640 {} \; sleep 12h & wait $${!}; done;"
```
Continuing to modify `docker-compose.yml`, add the certbot certificate volume into the peertube container.
It should look something like this:
```text
volumes:
- ./docker-volume/certbot/conf:/etc/letsencrypt
```
Restart your services:
```bash
docker-compose down; docker-comopse up -d
```
In the livechat plugin settings from your PeerTube administration settings, set the certificate directory to the following:
```text
/etc/letsencrypt/live
```
Save the plugin settings and verify Prosody can see the certificates:
```bash
docker-compose exec -u peertube \
peertube \
/data/plugins/data/peertube-plugin-livechat/prosodyAppImage/squashfs-root/AppRun \
prosodyctl \
--config /data/plugins/data/peertube-plugin-livechat/prosody/prosody.cfg.lua \
check certs
```
### Troubleshooting
If you can't make it work, you can use the diagnostic tool