Compare commits

...

63 Commits
main ... main

Author SHA1 Message Date
f
8b6cacc149 chore: publish 7.2.1+v7.3.0-bookworm release 2026-02-25 17:53:35 -03:00
a13cf748ce Merge pull request 'fix: autogenerate peertube secret' (#23) from issue-22 into main
Reviewed-on: coop-cloud/peertube#23
2026-02-25 20:52:04 +00:00
f
08f5f4424c fix: autogenerate peertube secret
closes #22
2026-02-25 12:35:12 -03:00
528306134a Merge pull request 'fix typo' (#20) from Numerica/peertube:main into main
Reviewed-on: coop-cloud/peertube#20
2026-02-25 04:39:18 +00:00
1b7a6bdf3d fix typo 2026-02-23 10:59:49 -03:00
3wc
67fab632a8 chore: publish 7.2.0+v7.3.0-bookworm release 2025-12-27 20:17:28 -05:00
rra
ba4fcf2e11 update label 2025-10-02 22:08:24 +02:00
rra
2b763f0719 Release notes for 7.1.0+v7.1.1-bookworm 2025-10-02 22:05:40 +02:00
rra
9e716979d5 chore: publish 7.1.0+v7.1.1-bookworm release 2025-10-02 22:01:31 +02:00
rra
8eda97112f chore: publish 7.0.0+v7.0.1-bookworm release 2025-10-02 21:49:20 +02:00
rra
44d1d7a906 release notes 6.1.0+v6.3.3-bookworm 2025-10-02 21:39:22 +02:00
rra
e47fc0dbd3 chore: publish 6.1.1+v6.3.3-bookworm release 2025-10-01 11:04:13 +02:00
rra
20a13e075f chore: publish 6.1.0+v6.3.3-bookworm release 2025-10-01 10:57:57 +02:00
rra
c1dcf6d507 chore: publish 6.0.2+v6.0.4-bookworm release 2025-09-17 17:30:45 +02:00
rra
edc04ce966 chore: publish 6.0.1+v6.0.0-bookworm release 2025-09-17 16:54:35 +02:00
rra
87972def72 update nginx for v6.0.0 2025-09-17 16:53:21 +02:00
rra
006de95947 chore: publish 6.0.0+v6.0.0-bookworm release 2025-09-17 16:31:47 +02:00
3wc
2744684292 chore: publish 5.0.1+v5.2.1-bullseye release 2025-02-06 18:12:22 -05:00
3wc
02081b0309 Keep default secret-in-config file for backwards compat. 2025-02-06 18:11:06 -05:00
3wc
13a3fd9253 chore: publish 5.0.0+v5.2.1-bullseye release 2025-02-06 15:55:27 -05:00
3wc
26eb5887ba Fix various compose syntax issues 2025-02-06 15:35:47 -05:00
3wc
768cc4aead Improve secret handling:
- Use `file_env` for db_password
- Add missing `PEERTUBE_SECRET`
- Add `generate_secret` local abra command
2025-02-06 15:00:04 -05:00
3wc
8ee85f529b Add postgres self-upgrade script 2025-02-06 14:28:04 -05:00
34f93d66eb Update .drone.yml 2025-01-08 10:09:13 -08:00
3wc
5c191f26a8 chore: publish 4.1.0+v5.2.1-bullseye release 2024-05-23 15:36:18 -03:00
716ea6b19a chore: release 4.0.0+v5.0.1-bullseye 2023-02-15 17:30:59 +01:00
3wc
ae674d2092 Switch to self-hosted stack-ssh-deploy image [mass update] 2023-01-21 11:49:56 -08:00
3wc
e3863183b7 Generate secrets for Drone 2023-01-20 21:53:32 -08:00
3wc
79f930c642 Add drone configs / secrets [mass update] 2023-01-20 21:32:06 -08:00
3wc
f3a2a46f58 Fix CI by adding networks: [mass update] 2023-01-20 11:58:41 -08:00
3wc
5fe53e8138 Automatically generate catalogue on release [mass update]
Re: coop-cloud/recipes-catalogue-json#4
2023-01-20 10:27:11 -08:00
3wc
a815480999 Update abra syntax in examples (finally) [mass update] 2023-01-19 16:02:28 -08:00
d999fb0867 chore: publish 3.0.0+v4.3.0-bullseye release 2022-10-25 11:14:46 +02:00
3687802f12 fix: user correct start / user
See https://github.com/Chocobozzz/PeerTube/issues/5302#issuecomment-1260521964
2022-10-13 09:21:10 +02:00
be091cd685 upgrade to v4.3, still testing, not releasing officially 2022-09-28 14:29:12 +02:00
fc15241ec5 use correct user
See https://github.com/Chocobozzz/PeerTube/issues/5302
2022-09-28 14:26:27 +02:00
60137256d4 try tuned deploy config
the web container keeps dying randomly due to the app upstream
dissapearing for some reason... i am trying to use this config to make
sure the web service can handle this gracefully and restart...

See https://docs.coopcloud.tech/maintainers/handbook/#tuning-deploy-configs
2022-08-17 11:34:00 +02:00
6e52231d18 Revert "always restart containers"
This reverts commit e79f3cf0cc.

This doesn't work :(

https://docs.docker.com/compose/compose-file/#restart idk...
2022-08-17 11:29:28 +02:00
e79f3cf0cc always restart containers 2022-08-17 11:26:10 +02:00
0fe43fc444 support ignoring pings
See https://github.com/Chocobozzz/PeerTube/pull/3550
2022-08-17 11:12:47 +02:00
488b58f955 bump up retries for healthcheck 2022-08-16 14:00:26 +02:00
dc5585ac6e fix: better healthcheck implementation
Closes coop-cloud/peertube#12
2022-08-15 10:44:38 +02:00
751d86dcc7 chore: publish 2.2.0+v4.2.2-bullseye release 2022-07-14 11:39:50 +02:00
73f080adbc chore: publish 2.1.1+v4.1.1-bullseye release 2022-03-08 14:16:10 +01:00
b99671c2bf chore: publish 2.1.0+v4.1.0-bullseye release 2022-02-25 09:19:57 +01:00
d1b297c5a6 chore: publish 2.0.0+v4.0.0-bullseye release 2022-01-18 10:47:52 +01:00
319707b52c new v4, prosody fix, unreleased so far 2022-01-17 14:22:33 +01:00
fdb40723bb docs: fix link 2021-12-12 02:12:19 +01:00
0dcc827104 chore: bump version 2021-11-30 11:36:30 +01:00
e995af0f61 refactor!: use templating for entrypoint 2021-11-30 11:32:30 +01:00
2f5a8b746e fix: thread smtp var 2021-11-30 11:27:16 +01:00
3e8c4733c2 feat: support live chat 2021-11-30 11:27:06 +01:00
883839996a docs: add plugin 2021-11-25 17:12:41 +01:00
07ef3b1238 chore: set new version labels 2021-11-25 16:05:47 +01:00
f4a5681e10 chore: new labels for new versioning scheme 2021-11-25 16:04:13 +01:00
5a94f938a3 chore: yaml header 2021-11-25 16:04:00 +01:00
6c175536ed chore: bump peertube version 2021-11-25 16:02:48 +01:00
3wc
e10edda36f Goodbye, emojis! 😢
[ci skip]
2021-11-23 12:19:05 +02:00
3wc
8c91f527a6 chore: fix README bullet formatting
[ci skip]
2021-11-22 13:42:04 +02:00
6fe5185316 Bump Nginx config 2021-09-03 09:05:32 +02:00
51e9dea17f Upgrade labels 2021-09-03 09:04:28 +02:00
6b9e8dd862 Upgrade peertube and add spaces 2021-09-03 09:02:58 +02:00
a076c442b6 Document host mode-ness
Closes coop-cloud/peertube#7.
2021-09-02 09:32:05 +02:00
14 changed files with 257 additions and 92 deletions

View File

@ -3,10 +3,13 @@ kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: decentral1se/stack-ssh-deploy:latest
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: peertube
generate_secrets: true
networks:
- proxy
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
@ -14,16 +17,25 @@ steps:
DOMAIN: peertube.swarm-test.autonomic.zone
STACK_NAME: peertube
LETS_ENCRYPT_ENV: production
NGINX_CONFIG_VERSION: v1
APP_ENTRYPOINT_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
trigger:
branch:
- main
---
kind: pipeline
name: recipe release
name: generate recipe catalogue
steps:
- name: release a new version
image: thecoopcloud/drone-abra:latest
image: plugins/downstream
settings:
command: recipe peertube release
deploy_key:
from_secret: abra_bot_deploy_key
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- toolshed/auto-recipes-catalogue-json
trigger:
event: tag

View File

@ -2,6 +2,7 @@ TYPE=peertube
DOMAIN=peertube.example.com # <= EDIT THIS
LETS_ENCRYPT_ENV=production
COMPOSE_FILE=compose.yml
PEERTUBE_WEBSERVER_PORT=443
PEERTUBE_WEBSERVER_HTTPS=true
@ -12,6 +13,10 @@ PEERTUBE_CONTACT_FORM_ENABLED=false
SECRET_DB_PASSWORD_VERSION=v1
# Comment out these lines if you want to store the peertube secret in a config file instead of a docker secret
COMPOSE_FILE="$COMPOSE_FILE:compose.peertube-secret.yml"
SECRET_PEERTUBE_SECRET_VERSION=v1 # length=32
## Webseed backend
#
# If no NGINX_WEBSEED option is enabled, videos will be served
@ -42,3 +47,9 @@ SECRET_DB_PASSWORD_VERSION=v1
## Live stream settings
#COMPOSE_FILE="compose.yml:compose.rtmp.yml"
## Live chat settings
#PEERTUBE_LIVE_CHAT_ENABLED=1
## Healthcheck settings
PEERTUBE_LOG_PING_REQUESTS=false

View File

@ -6,37 +6,50 @@ An ActivityPub-federated video streaming platform using P2P directly in your web
<!-- metadata -->
- **Category**: Applications
- **Status**: ❷💛
- **Image**: [`chocobozzz/peertube`](https://hub.docker.com/r/chocobozzz/peertube), ❷💛, official
- **Healthcheck**: ❶💚
- **Backups**: ❸🍎
- **Email**: ❶💚
- **Tests**:
- **SSO**: ❸🍎
* **Category**: Apps
* **Status**: 2, beta
* **Image**: [`chocobozzz/peertube`](https://hub.docker.com/r/chocobozzz/peertube), 4, upstream
* **Healthcheck**: 3
* **Backups**: 1
* **Email**: 3
* **Tests**: No
* **SSO**: 1
<!-- endmetadata -->
## Basic usage
1. Set up Docker Swarm and [`abra`]
2. Deploy [`coop-cloud/traefik`]
3. `abra app new peertube --secrets` (optionally with `--pass` if you'd like
to save secrets in `pass`)
4. `abra app YOURAPPDOMAIN config` - be sure to change `DOMAIN` to something that resolves to
your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy`
6. Open the configured domain in your browser to finish set-up
3. `abra app new peertube`
4. `abra app secret generate YOURAPPDOMAIN -a`
5. `abra app config YOURAPPDOMAIN` - be sure to change `DOMAIN` to something that resolves to your Docker swarm box
6. `abra app deploy YOURAPPDOMAIN`
7. Open the configured domain in your browser to finish set-up
## Host-mode networking
To avoid issues with performance, it is recommended to deploy your Traefik instance with:
```
COMPOSE_FILE="compose.yml:compose.host.yml:compose.peertube.yml"
```
This will avoid issues like [`#7`](https://git.coopcloud.tech/coop-cloud/peertube/issues/7).
## Email
1. Deploy [`coop-cloud/postfix-relay`] or use an external SMTP relay
2. `abra app YOURAPPDOMAIN config`, and uncomment the email lines and adjust as needed
3. `abra app YOURAPPDOMAIN deploy`
2. `abra app config YOURAPPDOMAIN`, and uncomment the email lines and adjust as needed
3. `abra app deploy YOURAPPDOMAIN`
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
[`coop-cloud/traefik`]: https://git.autonomic.zone/coop-cloud/traefik
[`coop-cloud/postfix-relay`]: https://git.autonomic.zone/coop-cloud/postfix-relay
## Plugins
- [`peertube-plugin-auth-openid-connect`](https://www.npmjs.com/package/peertube-plugin-auth-openid-connect) is the trusted OAuth2 support plugin (Keycloak integrations works!)
## Acknowledgements
Thanks to [@mirsal](https://git.autonomic.zone/mirsal) for the packaging work :heart:
Thanks to [@mirsal](https://git.coopcloud.tech/mirsal) for the packaging work :heart:

View File

@ -1,7 +1,7 @@
# shellcheck disable=SC2034,SC2145
export NGINX_CONFIG_VERSION=v2
export APP_ENTRYPOINT_VERSION=v2
export NGINX_CONFIG_VERSION=v8
export APP_ENTRYPOINT_VERSION=v7
sub_npm() {
abra__service_="app"

View File

@ -0,0 +1,14 @@
---
version: "3.8"
services:
app:
environment:
- PEERTUBE_SECRET_FILE=/run/secrets/peertube_secret
secrets:
- peertube_secret
secrets:
peertube_secret:
external: true
name: ${STACK_NAME}_peertube_secret_${SECRET_PEERTUBE_SECRET_VERSION}

View File

@ -1,7 +1,9 @@
---
version: "3.8"
services:
web:
image: nginx:1.20.0
image: nginx:1.29.4
networks:
- proxy
- internal
@ -25,24 +27,32 @@ services:
deploy:
restart_policy:
condition: on-failure
update_config:
failure_action: rollback
order: start-first
rollback_config:
order: start-first
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- coop-cloud.${STACK_NAME}.web.version=1.20.0-ea4560b8
app:
image: chocobozzz/peertube:v3.2.1-buster
image: chocobozzz/peertube:v7.3.0-bookworm
environment:
- PEERTUBE_ADMIN_EMAIL
- PEERTUBE_CONTACT_FORM_ENABLED
- PEERTUBE_DB_HOSTNAME=db
- PEERTUBE_DB_PASSWORD_FILE=/run/secrets/db_password
- PEERTUBE_DB_PORT=5432
- PEERTUBE_DB_USERNAME=peertube
- PEERTUBE_DB_PASSWORD_FILE=/run/secrets/db_password
- PEERTUBE_LIVE_CHAT_ENABLED
- PEERTUBE_LOG_PING_REQUESTS
- PEERTUBE_REDIS_HOSTNAME=cache
- PEERTUBE_SIGNUP_ENABLED
- PEERTUBE_SMTP_ENABLED
- PEERTUBE_TRANSCODING_ENABLED
- PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "172.16.0.0/12", "10.0.0.0/8"]
- PEERTUBE_WEBSERVER_HOSTNAME=${DOMAIN}
@ -58,47 +68,54 @@ services:
- source: app_entrypoint
target: /docker-entrypoint.sh
mode: 0555
command: npm start
command: node dist/server
healthcheck:
test: 'nodejs -e "http.get(''http://localhost:9000/api/v1/ping'', (res) => { console.log(''status: '', res.statusCode); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } });"'
interval: 1m
timeout: 30s
retries: 3
start_period: 1m
test: curl -f http://localhost:9000/v1/api/ping || exit 1
interval: 10s
timeout: 3s
retries: 20
entrypoint: /docker-entrypoint.sh
networks:
- internal
deploy:
labels: ["coop-cloud.${STACK_NAME}.app.version=v3.2.1-buster-e4f797ee"]
labels:
- "coop-cloud.${STACK_NAME}.version=7.2.1+v7.3.0-bookworm"
db:
image: postgres:10-alpine
image: pgautoupgrade/pgautoupgrade:18-alpine
environment:
- POSTGRES_USER=peertube
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
- POSTGRES_DB=peertube
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- internal
deploy:
update_config:
failure_action: rollback
order: start-first
labels: ['coop-cloud.${STACK_NAME}.db.version=10-alpine-131220fe']
healthcheck:
test: pg_isready -U peertube
interval: 10s
timeout: 5s
retries: 10
cache:
image: redis:4-alpine
image: redis:8-alpine
volumes:
- redis-data:/data
networks:
- internal
deploy:
labels: ['coop-cloud.${STACK_NAME}.cache.version=4-alpine-aaf7c123']
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 5s
retries: 10
networks:
internal:
proxy:
external: true
volumes:
app-data:
app-config:
@ -107,6 +124,7 @@ volumes:
nginx-cache:
postgres-data:
redis-data:
configs:
nginx_config:
name: ${STACK_NAME}_nginx_config_${NGINX_CONFIG_VERSION}
@ -114,7 +132,9 @@ configs:
template_driver: golang
app_entrypoint:
name: ${STACK_NAME}_app_entrypoint_${APP_ENTRYPOINT_VERSION}
file: entrypoint.sh
file: entrypoint.sh.tmpl
template_driver: golang
secrets:
db_password:
external: true

View File

@ -25,10 +25,16 @@ file_env() {
}
file_env "PEERTUBE_DB_PASSWORD"
file_env "PEERTUBE_SECRET"
if [ -z "$PEERTUBE_SMTP_ENABLED" ]; then
file_env "PEERTUBE_SMTP_PASSWORD"
fi
{{ if eq (env "PEERTUBE_SMTP_ENABLED") "1" }}
file_env "PEERTUBE_SMTP_PASSWORD"
{{ end }}
{{ if eq (env "PEERTUBE_LIVE_CHAT_ENABLED") "1" }}
apt -y update && apt install -y prosody && apt -y clean
mkdir -p /run/prosody && chown prosody:prosody /run/prosody
{{ end }}
# Copy the client files over to a named volume
# so that they may be served by nginx directly

View File

@ -39,15 +39,22 @@ http {
try_files /dev/null @api;
}
location = /api/v1/videos/upload-resumable {
location ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ {
client_max_body_size 0;
proxy_request_buffering off;
try_files /dev/null @api;
}
location = /api/v1/videos/upload {
limit_except POST HEAD { deny all; }
location ~ ^/api/v1/users/[^/]+/imports/import-resumable$ {
client_max_body_size 0;
proxy_request_buffering off;
try_files /dev/null @api;
}
location ~ ^/api/v1/videos/(upload|([^/]+/studio/edit))$ {
limit_except POST HEAD { deny all; }
# This is the maximum upload size, which roughly matches the maximum size of a video file.
# Note that temporary space is needed equal to the total size of all concurrent uploads.
@ -59,6 +66,13 @@ http {
try_files /dev/null @api;
}
location ~ ^/api/v1/runners/jobs/[^/]+/(update|success)$ {
client_max_body_size 12G; # default is 1M
add_header X-File-Maximum-Size 8G always; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size)
try_files /dev/null @api;
}
location ~ ^/api/v1/(videos|video-playlists|video-channels|users/me) {
client_max_body_size 3M; # default is 1M
add_header X-File-Maximum-Size 2M always; # inform backend of the set value in bytes before mime-encoding (x * 1.4 >= client_max_body_size)
@ -93,6 +107,11 @@ http {
try_files /dev/null @api_websocket;
}
# Plugin websocket routes
location ~ ^/plugins/[^/]+(/[^/]+)?/ws/ {
try_files /dev/null @api_websocket;
}
##
# Performance optimizations
# For extra performance please refer to https://github.com/denji/nginx-tuning
@ -111,7 +130,8 @@ http {
font/truetype
font/opentype
application/vnd.ms-fontobject
image/svg+xml;
image/svg+xml
application/xml;
gzip_min_length 1000; # default is 20 bytes
gzip_buffers 16 8k;
gzip_comp_level 2; # default is 1
@ -148,39 +168,28 @@ http {
alias /var/www/peertube/peertube-latest/client/dist/$1;
}
# Bypass PeerTube for performance reasons. Optional.
location ~ ^/static/(thumbnails|avatars)/ {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Methods 'GET, OPTIONS';
add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header Access-Control-Max-Age 1728000; # Preflight request can be cached 20 days
add_header Content-Type 'text/plain charset=UTF-8';
add_header Content-Length 0;
return 204;
}
# Plugin websocket routes
location ~ ^/plugins/[^/]+(/[^/]+)?/ws/ {
try_files /dev/null @api_websocket;
}
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Methods 'GET, OPTIONS';
add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header Cache-Control "public, max-age=7200"; # Cache response 2 hours
location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {
#We can't rate limit a try_files directive, so we need to duplicate @api
rewrite ^/static/(.*)$ /$1 break;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_limit_rate 5M;
try_files $uri @api;
proxy_pass http://backend;
}
# Bypass PeerTube for performance reasons. Optional.
location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {
limit_rate_after 5M;
location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {
limit_rate_after 5M;
# Clients usually have 4 simultaneous webseed connections, so the real limit is 3MB/s per client
set $peertube_limit_rate 800k;
# Increase rate limit in HLS mode, because we don't have multiple simultaneous connections
if ($request_uri ~ -fragmented.mp4$) {
set $peertube_limit_rate 5M;
}
set $peertube_limit_rate 5M;
# Use this line with nginx >= 1.17.0
limit_rate $peertube_limit_rate;
@ -201,23 +210,13 @@ http {
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Methods 'GET, OPTIONS';
add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
add_header X-Cache-Status $upstream_cache_status;
add_header X-Cache-Range $slice_range;
add_header X-Fuuu ok;
add_header X-Accel-Expires 604800;
# Don't spam access log file with byte range requests
access_log off;
}
aio threads;
# Enabling the sendfile directive eliminates the step of copying the data into the buffer
# and enables direct copying data from one file descriptor to another.
sendfile on;
sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process.
# should be > 800k.
sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k.
aio threads;
{{ if eq (env "NGINX_WEBSEED_PROXY_ENABLED") "1" }}
proxy_connect_timeout 70;

View File

@ -0,0 +1,27 @@
This major release went fairly smoothly, there are 2 post-migration steps which
are listed on the release notes:
https://github.com/Chocobozzz/PeerTube/releases/tag/v4.0.0
However, you need to do the second part first, adding additional config options
and/or changing the old ones. When you try to run the data migration, it'll
error out telling you which one you need to deal with, so that will help to guide.
Here's what I did:
abra app run tv.lumbung.space app bash
apt update && apt install vim
vi /config/production.yml # change options
Then, in another shell:
abra app run --user peertube tv.lumbung.space app bash
export NODE_CONFIG_DIR=/config
export NODE_ENV=production
export PEERTUBE_DB_PASSWORD=$(cat /run/secrets/db_password)
node dist/scripts/migrations/peertube-4.0.js
After, this I ran a restart of the app service, and things went fine.
abra app restart tv.lumbung.space app

View File

@ -0,0 +1,4 @@
Redis needs to be ugpraded to >= 6 and you can't downgrade afterwards, so
beware!
-- @decentral1se / Autonomic

View File

@ -0,0 +1,14 @@
This will break your deployment!
You need to add new lines to /config/production.yaml as shown here:
https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/config/production.yaml.example#L14
https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/config/production.yaml.example#L153
you can do that from the host as the file is inside a volume. It should be in /var/lib/docker/volumes/<peertube stack name>_app-config/_data/production.yaml on your host machine. It's important to save the secret that you're putting in the file somewhere else, as the container has write access to the file, and it's possible it could overwrite it, causing the secret to disappear. We don't know what happens to your data if you lose that secret.
You'll also have to run a migration as described in https://github.com/Chocobozzz/PeerTube/releases/tag/v5.0.0
abra app run <app name> app bash -u peertube
and when inside the container:
node dist/scripts/migrations/peertube-5.0.js
knoflook & decentralise @ Autonomic Co-op

View File

@ -0,0 +1,9 @@
WARNING! ⚠️
This release includes several major Postgres version updates, please make even more sure to take a database backup than usual
Also, `PEERTUBE_SECRET `can now be stored in Docker, instead of just in a config file. To enable this behaviour:
1. Extract the secret from the config file using `abra app run $STACK_NAME app grep peertube: /config/production.yaml | cut -d'"' -f2`
2. Run `abra app secret insert $STACK_NAME peertube_secret v1`
3. Run `abra app config $STACK_NAME`, and set `COMPOSE_FILE=compose.yml:compose.peertube-secret.yml`

View File

@ -0,0 +1,25 @@
Before upgrading:
You might need to migrate some data, depending on your setup:
> Important for Docker admins If you enabled the "Keep a version of the input file" configuration, files may have been stored in the container instead of the host volume. To prevent data loss, you must copy the files on the host before upgrading using docker compose cp peertube:/app/storage/original-video-files docker-volume/data
If you are upgrading from earlier versions, double check the configs `default.yml` and `production.yaml` as new config keys have been added but we are (currently) not tracking that file here (see issue: https://git.coopcloud.tech/coop-cloud/peertube/issues/17).
You can find the production.yaml.example here:
https://github.com/Chocobozzz/PeerTube/blob/v6.3.3/config/production.yaml.example
After upgrading:
You need to manually execute a migration script after your upgrade while PeerTube is running and the database migration is complete (`Migrations finished. New migration version schema: 865` in PeerTube startup logs, this migration script may take a while).
To search the logs:
`abra app logs <app>`
To execute the migration:
```abra app run <app> app bash
export ARGS="-e NODE_CONFIG_DIR=/config -e NODE_ENV=production"
export PEERTUBE_DB_PASSWORD=$(cat /run/secrets/db_password)
node dist/scripts/migrations/peertube-6.3.js```
You can find the full release notes here:
https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md#important-notes-5

View File

@ -0,0 +1,11 @@
> Due to a bug in the remote video thumbnail update, we recommend running the prune storage script to clean up the filesystem
```abra app run <app> app bash
export ARGS="-e NODE_CONFIG_DIR=/config -e NODE_ENV=production"
export PEERTUBE_DB_PASSWORD=$(cat /run/secrets/db_password)
npm run prune-storage```
> If you are using object storage, you will need to create the captions bucket or configure PeerTube to use an existing one in the configuration file or using environment variables if you use Docker (PEERTUBE_OBJECT_STORAGE_CAPTIONS_BUCKET_NAME, PEERTUBE_OBJECT_STORAGE_CAPTIONS_PREFIX, PEERTUBE_OBJECT_STORAGE_CAPTIONS_BASE_URL)
See release notes: https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md#v710