### :hammer: Dependencies
-Follow the steps of the [dependencies guide](dependencies.md).
+Follow the steps of the [dependencies guide](/support//doc/dependencies.md).
### :construction_worker: PeerTube user
$ sudo passwd peertube
```
+Ensure the peertube root directory is traversable by nginx:
+
+```bash
+$ ls -ld /var/www/peertube # Should be drwxr-xr-x
+```
+
**On FreeBSD**
```bash
$ sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
```
-Then edit the `config/production.yaml` file according to your webserver
-and database configuration (`webserver`, `database`, `redis`, `smtp` and `admin.email` sections in particular).
+Then edit the `config/production.yaml` file according to your webserver and database configuration. In particular:
+ * `webserver`: Reverse proxy public information
+ * `secrets`: Secret strings you must generate manually (PeerTube version >= 5.0)
+ * `database`: PostgreSQL settings
+ * `redis`: Redis settings
+ * `smtp`: If you want to use emails
+ * `admin.email`: To correctly fill `root` user email
+
Keys defined in `config/production.yaml` will override keys defined in `config/default.yaml`.
**PeerTube does not support webserver host change**. Even though [PeerTube CLI can help you to switch hostname](https://docs.joinpeertube.org/maintain-tools?id=update-hostjs) there's no official support for that since it is a risky operation that might result in unforeseen errors.
$ sudo systemctl reload nginx
```
-Now you have the certificates you can reload nginx:
-
-```bash
-$ sudo systemctl reload nginx
-```
-
Certbot should have installed a cron to automatically renew your certificate.
Since our nginx template supports webroot renewal, we suggest you to update the renewal config file to use the `webroot` authenticator:
$ sudo vim /etc/letsencrypt/renewal/your-domain.com.conf
```
-**FreeBSD**
+If you plan to have many concurrent viewers on your PeerTube instance, consider increasing `worker_connections` value: https://nginx.org/en/docs/ngx_core_module.html#worker_connections.
+
+<details>
+<summary><strong>If using FreeBSD</strong></summary>
+
On FreeBSD you can use [Dehydrated](https://dehydrated.io/) `security/dehydrated` for [Let's Encrypt](https://letsencrypt.org/)
```bash
$ sudo pkg install dehydrated
```
+</details>
-### :alembic: TCP/IP Tuning
-
-**On Linux**
+### :alembic: Linux TCP/IP Tuning
```bash
$ sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/
$ sudo journalctl -feu peertube
```
-**FreeBSD**
+<details>
+<summary><strong>If using FreeBSD</strong></summary>
+
On FreeBSD, copy the startup script and update rc.conf:
```bash
```bash
$ sudo service peertube start
```
+</details>
-### :bricks: OpenRC
+<details>
+<summary><strong>If using OpenRC</strong></summary>
If your OS uses OpenRC, copy the service script:
$ sudo /etc/init.d/peertube start
$ tail -f /var/log/peertube/peertube.log
```
+</details>
### :technologist: Administrator
### PeerTube instance
-**Check the changelog (in particular BREAKING CHANGES!):** https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md
+**Check the changelog (in particular the *IMPORTANT NOTES* section):** https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md
-#### Auto
-
-The password it asks is PeerTube's database user password.
+Run the upgrade script (the password it asks is PeerTube's database user password):
```bash
$ cd /var/www/peertube/peertube-latest/scripts && sudo -H -u peertube ./upgrade.sh
$ sudo systemctl restart peertube # Or use your OS command to restart PeerTube if you don't use systemd
```
-#### Manually
+<details>
+<summary><strong>Prefer manual upgrade?</strong></summary>
Make a SQL backup
sudo unlink ./peertube-latest && \
sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
```
+</details>
+
+### Update PeerTube configuration
+
+Check for configuration changes, and report them in your `config/production.yaml` file:
+
+```bash
+$ cd /var/www/peertube/versions
+$ diff -u "$(ls --sort=t | head -2 | tail -1)/config/production.yaml.example" "$(ls --sort=t | head -1)/config/production.yaml.example"
+```
-### nginx
+### Update nginx configuration
Check changes in nginx configuration:
$ diff -u "$(ls --sort=t | head -2 | tail -1)/support/nginx/peertube" "$(ls --sort=t | head -1)/support/nginx/peertube"
```
-### systemd
+### Update systemd service
Check changes in systemd configuration: