update config
This commit is contained in:
parent
a2ec3bbcb7
commit
ff84ece681
56
Dockerfile
56
Dockerfile
|
@ -1,29 +1,14 @@
|
||||||
FROM debian:bullseye-slim
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
ARG PEERTUBE_VER=v2.0.0
|
ARG PEERTUBE_VER=v2.0.0
|
||||||
|
ARG NPM_RUN_BUILD_OPTS
|
||||||
|
|
||||||
|
ENV UID=991 \
|
||||||
|
GID=991 \
|
||||||
|
FORCE_CHOWN=false \
|
||||||
|
NODE_ENV=production \
|
||||||
|
NODE_CONFIG_DIR=/config
|
||||||
|
|
||||||
ENV UID=991 GID=991 \
|
|
||||||
HTTPS=false \
|
|
||||||
HOSTNAME=peertube.localhost \
|
|
||||||
PORT=80 \
|
|
||||||
DATABASE_HOST=localhost \
|
|
||||||
DATABASE_PORT=5432 \
|
|
||||||
DATABASE_USERNAME=peertube \
|
|
||||||
DATABASE_PASSWORD=peertube \
|
|
||||||
ADMIN_EMAIL=admin@domain.local \
|
|
||||||
SIGNUP_ENABLE=false \
|
|
||||||
TRANSCODING_ENABLE=false \
|
|
||||||
TRANSCODING_THREADS=2 \
|
|
||||||
BODY_SIZE=100M \
|
|
||||||
CACHE_SIZE=100 \
|
|
||||||
SIGNUP_LIMIT=10 \
|
|
||||||
VIDEO_QUOTA=-1 \
|
|
||||||
RESOLUTION_280=true \
|
|
||||||
RESOLUTION_360=true \
|
|
||||||
RESOLUTION_480=true \
|
|
||||||
RESOLUTION_720=true \
|
|
||||||
RESOLUTION_1080=true \
|
|
||||||
DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
RUN groupadd -g 991 peertube && useradd -u 991 -g 991 --create-home peertube \
|
RUN groupadd -g 991 peertube && useradd -u 991 -g 991 --create-home peertube \
|
||||||
&& echo "deb http://ftp.debian.org/debian bullseye-backports main contrib non-free" >> /etc/apt/sources.list \
|
&& echo "deb http://ftp.debian.org/debian bullseye-backports main contrib non-free" >> /etc/apt/sources.list \
|
||||||
|
@ -31,42 +16,35 @@ RUN groupadd -g 991 peertube && useradd -u 991 -g 991 --create-home peertube \
|
||||||
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||||||
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y --no-install-recommends install nodejs yarn curl gosu gnupg dirmngr ffmpeg openssl git build-essential nginx-light \
|
&& apt-get -y --no-install-recommends install nodejs yarn curl gnupg dirmngr ffmpeg openssl git build-essential \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& echo "****** Clone Peertube ******" \
|
&& echo "****** Clone Peertube ******" \
|
||||||
&& git clone --branch ${PEERTUBE_VER} https://github.com/Chocobozzz/PeerTube /PeerTube \
|
&& git clone --branch ${PEERTUBE_VER} https://github.com/Chocobozzz/PeerTube /app \
|
||||||
&& echo "****** chown ******" \
|
&& echo "****** chown ******" \
|
||||||
&& chown -R peertube:peertube PeerTube \
|
&& chown -R peertube:peertube /app \
|
||||||
&& cd /PeerTube \
|
&& cd /app \
|
||||||
&& echo "****** run npm install as user ******" \
|
&& echo "****** run npm install as user ******" \
|
||||||
&& su - peertube -c "cd /PeerTube && npm install" \
|
&& su - peertube -c "cd /app && npm run build -- $NPM_RUN_BUILD_OPTS && rm -r ./node_modules ./client/node_modules " \
|
||||||
&& echo "****** run yarn install as user ******" \
|
&& echo "****** run yarn install as user ******" \
|
||||||
&& su - peertube -c "cd /PeerTube && yarn install" \
|
&& su - peertube -c "cd /app && yarn install --pure-lockfile --production && yarn cache clean" \
|
||||||
&& echo "****** run npm run build as user ******" \
|
|
||||||
&& su - peertube -c "cd /PeerTube && npm run build" \
|
|
||||||
&& apt-get remove --purge --yes build-essential curl git \
|
&& apt-get remove --purge --yes build-essential curl git \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /PeerTube/.git \
|
&& rm -rf /app/.git \
|
||||||
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/cache/debconf/*-old \
|
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/cache/debconf/*-old \
|
||||||
&& rm -rf /usr/share/man/?? \
|
&& rm -rf /usr/share/man/?? \
|
||||||
&& rm -rf /usr/share/man/??_* \
|
&& rm -rf /usr/share/man/??_* \
|
||||||
&& mkdir -p /{data,config} \
|
&& mkdir -p /{data,config} \
|
||||||
&& chown -R peertube:peertube /data /config
|
&& chown -R peertube:peertube /data /config
|
||||||
|
|
||||||
WORKDIR /PeerTube/
|
WORKDIR /app/
|
||||||
|
|
||||||
ENV NODE_ENV production
|
|
||||||
ENV NODE_CONFIG_DIR /config
|
|
||||||
|
|
||||||
VOLUME ["/data", "/config"]
|
VOLUME ["/data", "/config"]
|
||||||
VOLUME /config
|
|
||||||
|
|
||||||
EXPOSE 9000
|
EXPOSE 9000
|
||||||
|
|
||||||
COPY rootfs /
|
COPY ./support/docker/production/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
RUN chmod +x /usr/local/bin/startup
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/startup"]
|
|
||||||
CMD ["npm", "start"]
|
CMD ["npm", "start"]
|
||||||
|
|
|
@ -1,82 +0,0 @@
|
||||||
listen:
|
|
||||||
port: 9000
|
|
||||||
|
|
||||||
# Correspond to your reverse proxy "listen" configuration
|
|
||||||
webserver:
|
|
||||||
https: <https>
|
|
||||||
hostname: '<hostname>'
|
|
||||||
port: <port>
|
|
||||||
|
|
||||||
# Your database name will be "peertube"+database.suffix
|
|
||||||
database:
|
|
||||||
hostname: '<database_host>'
|
|
||||||
port: <database_port>
|
|
||||||
suffix: '_prod'
|
|
||||||
username: '<database_username>'
|
|
||||||
password: '<database_password>'
|
|
||||||
|
|
||||||
redis:
|
|
||||||
hostname: 'redis_hostname'
|
|
||||||
port: 'redis_port'
|
|
||||||
auth: null
|
|
||||||
|
|
||||||
smtp:
|
|
||||||
hostname: '<smtp_hostname>'
|
|
||||||
port: <smtp_port>
|
|
||||||
username: '<smtp_username>'
|
|
||||||
password: '<smtp_password>'
|
|
||||||
tls: <smtp_tls>
|
|
||||||
ca_file: null # Used for self signed certificates
|
|
||||||
from_address: '<from_address>'
|
|
||||||
|
|
||||||
# From the project root directory
|
|
||||||
storage:
|
|
||||||
avatars: 'avatars/'
|
|
||||||
certs: 'certs/'
|
|
||||||
videos: 'videos/'
|
|
||||||
logs: 'logs/'
|
|
||||||
previews: 'previews/'
|
|
||||||
thumbnails: 'thumbnails/'
|
|
||||||
torrents: 'torrents/'
|
|
||||||
|
|
||||||
|
|
||||||
log:
|
|
||||||
level: 'info' # debug/info/warning/error
|
|
||||||
|
|
||||||
cache:
|
|
||||||
previews:
|
|
||||||
size: <cache_size>
|
|
||||||
|
|
||||||
admin:
|
|
||||||
email: '<admin_email>'
|
|
||||||
|
|
||||||
signup:
|
|
||||||
enabled: <signup_enabled>
|
|
||||||
limit: <signup_limit> # When the limit is reached, registrations are disabled. -1 == unlimited
|
|
||||||
|
|
||||||
user:
|
|
||||||
# Default value of maximum video BYTES the user can upload (does not take into account transcoded files).
|
|
||||||
# -1 == unlimited
|
|
||||||
video_quota: <video_quota>
|
|
||||||
|
|
||||||
# If enabled, the video will be transcoded to mp4 (x264) with "faststart" flag
|
|
||||||
# Uses a lot of CPU!
|
|
||||||
transcoding:
|
|
||||||
enabled: <transcoding_enable>
|
|
||||||
threads: <transcoding_threads>
|
|
||||||
resolutions: # Only created if the original video has a higher resolution
|
|
||||||
240p: <resolution_280>
|
|
||||||
360p: <resolution_360>
|
|
||||||
480p: <resolution_480>
|
|
||||||
720p: <resolution_720>
|
|
||||||
1080p: <resolution_1080>
|
|
||||||
|
|
||||||
|
|
||||||
instance:
|
|
||||||
name: '<instance_name>'
|
|
||||||
description: '' # Support markdown
|
|
||||||
terms: '' # Support markdown
|
|
||||||
default_client_route: '/videos/trending'
|
|
||||||
customizations:
|
|
||||||
javascript: '' # Directly your JavaScript code (without <script> tags). Will be eval at runtime
|
|
||||||
css: '' # Directly your CSS code (without <style> tags). Will be injected at runtime
|
|
|
@ -1,47 +0,0 @@
|
||||||
server {
|
|
||||||
listen 8080;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://localhost:9000;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
|
|
||||||
# For the video upload
|
|
||||||
client_max_body_size <body_size>;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Bypass PeerTube webseed route for better performances
|
|
||||||
location /static/webseed {
|
|
||||||
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;
|
|
||||||
add_header 'Content-Type' 'text/plain charset=UTF-8';
|
|
||||||
add_header 'Content-Length' 0;
|
|
||||||
return 204;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($request_method = 'GET') {
|
|
||||||
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';
|
|
||||||
}
|
|
||||||
|
|
||||||
alias /PeerTube/videos;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Websocket tracker
|
|
||||||
location /tracker/socket {
|
|
||||||
# Peers send a message to the tracker every 15 minutes
|
|
||||||
# Don't close the websocket before this time
|
|
||||||
proxy_read_timeout 1200s;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_pass http://localhost:9000;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
#groupadd -g ${GID} peertube && useradd -u ${UID} -M -g ${GID} peertube
|
|
||||||
|
|
||||||
usermod -u ${GID} peertube
|
|
||||||
groupmod -g ${UID} peertube
|
|
||||||
|
|
||||||
sed -i -e 's|<https>|'${HTTPS}'|' \
|
|
||||||
-e 's|<hostname>|'${HOSTNAME}'|' \
|
|
||||||
-e 's|<port>|'${PORT}'|' \
|
|
||||||
-e 's|<database_host>|'${DATABASE_HOST}'|' \
|
|
||||||
-e 's|<database_port>|'${DATABASE_PORT}'|' \
|
|
||||||
-e 's|<database_username>|'${DATABASE_USERNAME}'|' \
|
|
||||||
-e 's|<database_password>|'${DATABASE_PASSWORD}'|' \
|
|
||||||
-e 's|<admin_email>|'${ADMIN_EMAIL}'|' \
|
|
||||||
-e 's|<signup_enabled>|'${SIGNUP_ENABLE}'|' \
|
|
||||||
-e 's|<transcoding_enable>|'${TRANSCODING_ENABLE}'|' \
|
|
||||||
-e 's|<transcoding_threads>|'${TRANSCODING_THREADS}'|' \
|
|
||||||
-e 's|<cache_size>|'${CACHE_SIZE}'|' \
|
|
||||||
-e 's|<signup_limit>|'${SIGNUP_LIMIT}'|' \
|
|
||||||
-e 's|<video_quota>|'${VIDEO_QUOTA}'|' \
|
|
||||||
-e 's|<resolution_280>|'${RESOLUTION_280}'|' \
|
|
||||||
-e 's|<resolution_360>|'${RESOLUTION_360}'|' \
|
|
||||||
-e 's|<resolution_480>|'${RESOLUTION_480}'|' \
|
|
||||||
-e 's|<resolution_720>|'${RESOLUTION_720}'|' \
|
|
||||||
-e 's|<resolution_1080>|'${RESOLUTION_1080}'|' /PeerTube/config/production.yaml
|
|
||||||
|
|
||||||
sed -i -e 's|<body_size>|'${BODY_SIZE}'|' /etc/nginx/sites-enabled/peertube.conf
|
|
||||||
|
|
||||||
chown -R $UID:$GID /home/peertube
|
|
||||||
chown -R $UID:$GID /PeerTube
|
|
||||||
|
|
||||||
nginx
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
exec su-exec peertube:peertube NODE_ENV=production npm start
|
|
||||||
else
|
|
||||||
exec su-exec peertube:peertube NODE_ENV=production npm $#
|
|
||||||
fi
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
#groupadd -g ${GID} peertube && useradd -u ${UID} -M -g ${GID} peertube
|
|
||||||
|
|
||||||
usermod -u ${GID} peertube
|
|
||||||
groupmod -g ${UID} peertube
|
|
||||||
|
|
||||||
sed -i -e 's|<https>|'${HTTPS}'|' \
|
|
||||||
-e 's|<hostname>|'${HOSTNAME}'|' \
|
|
||||||
-e 's|<port>|'${PORT}'|' \
|
|
||||||
-e 's|<database_host>|'${DATABASE_HOST}'|' \
|
|
||||||
-e 's|<database_port>|'${DATABASE_PORT}'|' \
|
|
||||||
-e 's|<database_username>|'${DATABASE_USERNAME}'|' \
|
|
||||||
-e 's|<database_password>|'${DATABASE_PASSWORD}'|' \
|
|
||||||
-e 's|<admin_email>|'${ADMIN_EMAIL}'|' \
|
|
||||||
-e 's|<signup_enabled>|'${SIGNUP_ENABLE}'|' \
|
|
||||||
-e 's|<transcoding_enable>|'${TRANSCODING_ENABLE}'|' \
|
|
||||||
-e 's|<transcoding_threads>|'${TRANSCODING_THREADS}'|' \
|
|
||||||
-e 's|<cache_size>|'${CACHE_SIZE}'|' \
|
|
||||||
-e 's|<signup_limit>|'${SIGNUP_LIMIT}'|' \
|
|
||||||
-e 's|<video_quota>|'${VIDEO_QUOTA}'|' \
|
|
||||||
-e 's|<resolution_280>|'${RESOLUTION_280}'|' \
|
|
||||||
-e 's|<resolution_360>|'${RESOLUTION_360}'|' \
|
|
||||||
-e 's|<resolution_480>|'${RESOLUTION_480}'|' \
|
|
||||||
-e 's|<resolution_720>|'${RESOLUTION_720}'|' \
|
|
||||||
-e 's|<resolution_1080>|'${RESOLUTION_1080}'|' /PeerTube/config/production.yaml
|
|
||||||
|
|
||||||
sed -i -e 's|<body_size>|'${BODY_SIZE}'|' /etc/nginx/sites-enabled/peertube.conf
|
|
||||||
|
|
||||||
chown -R $UID:$GID /home/peertube
|
|
||||||
chown -R $UID:$GID /PeerTube
|
|
||||||
|
|
||||||
nginx
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
su - peertube -c "cd /PeerTube && NODE_ENV=production npm start"
|
|
||||||
else
|
|
||||||
su - peertube -c "cd /PeerTube && NODE_ENV=production npm $#"
|
|
||||||
fi
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/bash
|
||||||
|
## author : Dryusdan
|
||||||
|
## date : 16/11/2019
|
||||||
|
## description : Start Peertube
|
||||||
|
## usage : ./docker-entrypoint.sh
|
||||||
|
|
||||||
|
## Bash strict mode ####################################
|
||||||
|
set -o errexit # abort on nonzero exitstatus
|
||||||
|
set -o nounset # abort on unbound variable
|
||||||
|
set -o pipefail # don't hide errors within pipes
|
||||||
|
|
||||||
|
## Bash color ##########################################
|
||||||
|
# Set colors
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[00;32m'
|
||||||
|
YELLOW='\033[00;33m'
|
||||||
|
BLUE='\033[00;34m'
|
||||||
|
PURPLE='\033[00;35m'
|
||||||
|
CYAN='\033[00;36m'
|
||||||
|
LIGHTGRAY='\033[00;37m'
|
||||||
|
LRED='\033[01;31m'
|
||||||
|
LGREEN='\033[01;32m'
|
||||||
|
LYELLOW='\033[01;33m'
|
||||||
|
LBLUE='\033[01;34m'
|
||||||
|
LPURPLE='\033[01;35m'
|
||||||
|
LCYAN='\033[01;36m'
|
||||||
|
WHITE='\033[01;37m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
## Logs ################################################
|
||||||
|
readonly SCRIPTNAME="$(basename "$0")"
|
||||||
|
info() { echo -e "${LBLUE}[INFO] $* ${NC}" | logger --tag "${SCRIPTNAME}" --stderr ; }
|
||||||
|
warning() { echo -e "${YELLOW}[WARNING] $* ${NC}" | logger --tag "${SCRIPTNAME}" --stderr ; }
|
||||||
|
error() { echo -e "${LRED}[ERROR] $* ${NC}" | logger --tag "${SCRIPTNAME}" --stderr ; }
|
||||||
|
fatal() { echo -e "${RED}[FATAL] $* ${NC}" | logger --tag "${SCRIPTNAME}" --stderr ; exit 1 ; }
|
||||||
|
########################################################
|
||||||
|
|
||||||
|
usermod -u ${GID} peertube
|
||||||
|
groupmod -g ${UID} peertube
|
||||||
|
|
||||||
|
info "Populate config directory"
|
||||||
|
if [ -z "$(ls -A /config)" ]; then
|
||||||
|
cp /app/support/docker/production/config/* /config
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Always copy default and custom env configuration file, in cases where new keys were added
|
||||||
|
cp /app/config/default.yaml /config
|
||||||
|
cp /app/support/docker/production/config/custom-environment-variables.yaml /config
|
||||||
|
find /config ! -user peertube -exec chown peertube:peertube {} \;
|
||||||
|
|
||||||
|
# first arg is `-f` or `--some-option`
|
||||||
|
# or first arg is `something.conf`
|
||||||
|
if [ "${1#-}" != "${1}" ] || [ "${1%.conf}" != "${1}" ]; then
|
||||||
|
set -- npm "${@}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${FORCE_CHOWN} ]; then
|
||||||
|
warning "Force chown is set to true. This may take a time"
|
||||||
|
find /data ! -user peertube -exec chown peertube:peertube {} \;
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "PeerTube Launch"
|
||||||
|
exec su - peertube -c "cd /app && npm start"
|
||||||
|
|
Reference in New Issue