Téléverser les fichiers vers "/"
This commit is contained in:
parent
c5027ba581
commit
4d33028ed5
59
.env
Normal file
59
.env
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
VM_VERSIONNING="2023-10-13"
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Local network definition
|
||||||
|
# --------------------------------------------------
|
||||||
|
VM_DOMAIN="home"
|
||||||
|
VM_IP_ASSIGN="xxx.xxx.xxx"
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# VM specific definition
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
VM_NAME="xxx"
|
||||||
|
VM_TITLE="xxx"
|
||||||
|
VM_IP="$VM_IP_ASSIGN.xxx"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Local containers exposed ports (for all VM)
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
# common (4000-4999)
|
||||||
|
VM_PORT_DOCKERPROXY="4000"
|
||||||
|
VM_PORT_LOKI="4001"
|
||||||
|
VM_PORT_PROMTAIL="4002"
|
||||||
|
VM_PORT_DOZZLE="4003"
|
||||||
|
VM_PORT_WATCHTOWER="4004"
|
||||||
|
|
||||||
|
# particular (8000-8999)
|
||||||
|
VM_PORT_PIPED_DB="8300"
|
||||||
|
VM_PORT_PIPED_BACK="8301"
|
||||||
|
VM_PORT_PIPED_FRONT="8302"
|
||||||
|
VM_PORT_PIPED_PROXY="8303"
|
||||||
|
VM_PORT_HYPERPIPE_NGINX="8304"
|
||||||
|
VM_PORT_HYPERPIPE_BACK="8305"
|
||||||
|
VM_PORT_HYPERPIPE_FRONT="8306"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Common
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
VM_USER="1000"
|
||||||
|
VM_GROUP="1000"
|
||||||
|
VM_MASTER="xxx"
|
||||||
|
MASTER_HOST="${VM_MASTER}.${VM_DOMAIN}"
|
||||||
|
VM_HOST="${VM_NAME}.${VM_DOMAIN}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Services specifics
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
WATCHTOWER_NOTIFICATION_TITLE_TAG="${VM_TITLE}"
|
||||||
|
WATCHTOWER_NOTIFICATIONS_HOSTNAME="${VM_NAME}"
|
57
README.md
57
README.md
@ -1,2 +1,57 @@
|
|||||||
# hyperpiped
|
# Hyperpipe / Piped
|
||||||
|
|
||||||
|
Hyperpipe, a privacy-friendly frontend designed for YouTube Music, was inspired and created using Piped and YouTube's InnerTube API.
|
||||||
|
|
||||||
|
In the following steps, you'll be guided through the installation of Hyperpipe, as well as Piped, to dramatically improve your online privacy.
|
||||||
|
|
||||||
|
What sets Hyperpipe and Piped apart in particular is the ability to enjoy YouTube music and videos without being interrupted by ads.
|
||||||
|
|
||||||
|
In this detailed tutorial, I'll explain how to deploy Hyperpipe using Docker and Portainer.
|
||||||
|
|
||||||
|
## Considerations
|
||||||
|
|
||||||
|
This Docker stack is scaled for a 8 vCPUs _and 24 Gb memory_ on a gigabite network.
|
||||||
|
|
||||||
|
Using ADSL will give poorer performance than using fiber.
|
||||||
|
|
||||||
|
I strongly recommend that you only use this tool if you finally have a good fiber connection.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
You must have already installed:
|
||||||
|
|
||||||
|
* A fully fonctionnal [internet domain name](https://infos.zogg.fr/caddy-docker-cloudflare)
|
||||||
|
* [Docker](https://infos.zogg.fr/tags#docker)
|
||||||
|
* A textual editor ([Visual Studio Code](https://code.visualstudio.com/), [Notepad++](https://notepad-plus-plus.org/), nano...)
|
||||||
|
* A fully functionnal [Traefik reverse proxy](https://infos.zogg.fr/tags#traefik) setup
|
||||||
|
|
||||||
|
## What's here
|
||||||
|
|
||||||
|
### Folders
|
||||||
|
|
||||||
|
* **conf** : used to store all configuration files
|
||||||
|
* **datas** : persistent storage _(mainly for the PostgreQL database)_
|
||||||
|
|
||||||
|
### Files
|
||||||
|
|
||||||
|
* **docker-compose.yml** : a fully functionnal docker-compose file to run using _docker compose up -d_
|
||||||
|
* **vm/common.yml** : docker-compose on which _docker-compose.yml_ is extended
|
||||||
|
* **vm/host.yml** : docker-compose on which host.yml_ is extended
|
||||||
|
* **.env** : default environement variables used by the docker-compose file
|
||||||
|
|
||||||
|
* **traefik/hyperpipe.yml** : the Traefik configuration for this stack _(routers, services, middlewares)_
|
||||||
|
|
||||||
|
* **conf/hyperpipe/nginx.conf** : highly optimized [NGinx](https://infos.zogg.fr/nginx) base configuration used by _hyperpipe-nginx_
|
||||||
|
* **conf/hyperpipe/youtube.conf** : used by _hyperpipe-nginx_
|
||||||
|
* **conf/piped/api.conf** : used by _hyperpipe-nginx_
|
||||||
|
* **conf/piped/backend.conf** : configuration file used by _piped-back_
|
||||||
|
* **conf/piped/frontend.conf** : used by _hyperpipe-nginx_
|
||||||
|
* **conf/piped/proxy.conf** : used by _hyperpipe-nginx_
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
You **MUST** find & replace all _'xxx'_ entries in each file to match your setup.
|
||||||
|
|
||||||
|
* **docker-compose.yml** : piped-db _POSTGRES_PASSWORD_
|
||||||
|
* **nginx.conf** : resolver _(put your private dns ip resolver or comment the entire line)_
|
||||||
|
* **domain.com** : replace all _domain.com_ to match your domain name in all files
|
||||||
|
339
docker-compose.yml
Normal file
339
docker-compose.yml
Normal file
@ -0,0 +1,339 @@
|
|||||||
|
version: "3.0"
|
||||||
|
|
||||||
|
#
|
||||||
|
# updated: 2023-10-13
|
||||||
|
# stack: hyperpiped
|
||||||
|
#
|
||||||
|
|
||||||
|
networks:
|
||||||
|
hyperpipe:
|
||||||
|
name: hyperpipe
|
||||||
|
driver: bridge
|
||||||
|
enable_ipv6: true
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
piped-db:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/common.yml
|
||||||
|
service: x-common
|
||||||
|
user: 0:0
|
||||||
|
cap_add:
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
- CHOWN
|
||||||
|
- FOWNER
|
||||||
|
- FSETID
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
- MKNOD
|
||||||
|
container_name: piped-db
|
||||||
|
hostname: piped-db
|
||||||
|
image: postgres:16
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_PIPED_DB}:5432"
|
||||||
|
expose:
|
||||||
|
- "5432"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pg_isready", "-q", "-d", "piped", "-U", "root"]
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: piped
|
||||||
|
POSTGRES_USER: root
|
||||||
|
POSTGRES_PASSWORD: xxx
|
||||||
|
labels:
|
||||||
|
com.stack.name: "piped"
|
||||||
|
com.stack.service.name: "db"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
volumes:
|
||||||
|
- ./datas/db:/var/lib/postgresql/data:rw
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
piped-proxy:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
read_only: true
|
||||||
|
container_name: piped-proxy
|
||||||
|
hostname: piped-proxy
|
||||||
|
image: 1337kavin/piped-proxy:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_PIPED_PROXY}:80"
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
healthcheck:
|
||||||
|
test: uname -a || exit 1
|
||||||
|
environment:
|
||||||
|
UDS: 1
|
||||||
|
labels:
|
||||||
|
com.stack.name: "piped"
|
||||||
|
com.stack.service.name: "proxy"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
volumes:
|
||||||
|
- ./datas/piped/proxy:/app/socket:rw
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
piped-back:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
user: 0:0
|
||||||
|
cap_add:
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
- CHOWN
|
||||||
|
- FOWNER
|
||||||
|
- FSETID
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
- MKNOD
|
||||||
|
container_name: piped-back
|
||||||
|
hostname: piped-back
|
||||||
|
image: 1337kavin/piped:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_PIPED_BACK}:8080"
|
||||||
|
expose:
|
||||||
|
- "8080"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
depends_on:
|
||||||
|
piped-db:
|
||||||
|
condition: service_healthy
|
||||||
|
piped-proxy:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: curl --fail http://localhost:8080/ || exit 1
|
||||||
|
environment:
|
||||||
|
DSN: ""
|
||||||
|
labels:
|
||||||
|
com.stack.name: "piped"
|
||||||
|
com.stack.service.name: "back"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
volumes:
|
||||||
|
- ./conf/piped/backend.conf:/app/config.properties:ro
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
piped-front:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
user: 0:0
|
||||||
|
cap_add:
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
- CHOWN
|
||||||
|
- FOWNER
|
||||||
|
- FSETID
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
- MKNOD
|
||||||
|
container_name: piped-front
|
||||||
|
hostname: piped-front
|
||||||
|
image: 1337kavin/piped-frontend:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_PIPED_FRONT}:80"
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
depends_on:
|
||||||
|
piped-back:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: wget --no-verbose --tries=1 --spider http://localhost:80
|
||||||
|
entrypoint: ash -c 'sed -i s/pipedapi.kavin.rocks/pipedapi.domain.com/g /usr/share/nginx/html/assets/* && /docker-entrypoint.sh && nginx -g "daemon off;"'
|
||||||
|
labels:
|
||||||
|
com.stack.name: "piped"
|
||||||
|
com.stack.service.name: "front"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
hyperpipe-nginx:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
user: 0:0
|
||||||
|
cap_add:
|
||||||
|
- CHOWN
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
- FOWNER
|
||||||
|
- FSETID
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
- MKNOD
|
||||||
|
- SETPCAP
|
||||||
|
- SYS_ADMIN
|
||||||
|
container_name: hyperpipe-nginx
|
||||||
|
hostname: hyperpipe-nginx
|
||||||
|
image: registry.domain.com/zogg/nginx:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
piped-db:
|
||||||
|
condition: service_healthy
|
||||||
|
piped-back:
|
||||||
|
condition: service_healthy
|
||||||
|
piped-front:
|
||||||
|
condition: service_healthy
|
||||||
|
piped-proxy:
|
||||||
|
condition: service_healthy
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_HYPERPIPE_NGINX}:80"
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
healthcheck:
|
||||||
|
test: curl --fail http://localhost:80/ || exit 1
|
||||||
|
start_period: 120s
|
||||||
|
labels:
|
||||||
|
com.stack.name: "hyperpipe"
|
||||||
|
com.stack.service.name: "nginx"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
volumes:
|
||||||
|
- ./conf/hyperpipe/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./conf/piped/api.conf:/etc/nginx/conf.d/pipedapi.conf:ro
|
||||||
|
- ./conf/piped/proxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro
|
||||||
|
- ./conf/piped/frontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro
|
||||||
|
- ./conf/hyperpipe/youtube.conf:/etc/nginx/snippets/ytproxy.conf:ro
|
||||||
|
- ./datas/piped/proxy:/var/run/ytproxy:rw
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
hyperpipe-back:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
container_name: hyperpipe-back
|
||||||
|
hostname: hyperpipe-back
|
||||||
|
image: codeberg.org/hyperpipe/hyperpipe-backend:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
hyperpipe-nginx:
|
||||||
|
condition: service_healthy
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_HYPERPIPE_BACK}:3000"
|
||||||
|
expose:
|
||||||
|
- "3000"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
environment:
|
||||||
|
HYP_PROXY: "ytproxy.domain.com"
|
||||||
|
labels:
|
||||||
|
com.stack.name: "hyperpipe"
|
||||||
|
com.stack.service.name: "back"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
||||||
|
|
||||||
|
hyperpipe-front:
|
||||||
|
extends:
|
||||||
|
file: ./_vm/host.yml
|
||||||
|
service: x-host
|
||||||
|
user: 0:0
|
||||||
|
cap_add:
|
||||||
|
- DAC_OVERRIDE
|
||||||
|
- CHOWN
|
||||||
|
- FOWNER
|
||||||
|
- FSETID
|
||||||
|
- SETGID
|
||||||
|
- SETUID
|
||||||
|
- NET_BIND_SERVICE
|
||||||
|
- MKNOD
|
||||||
|
container_name: hyperpipe-front
|
||||||
|
hostname: hyperpipe-front
|
||||||
|
image: codeberg.org/hyperpipe/hyperpipe:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
hyperpipe-back:
|
||||||
|
condition: service_started
|
||||||
|
ports:
|
||||||
|
- "${VM_PORT_HYPERPIPE_FRONT}:80"
|
||||||
|
expose:
|
||||||
|
- "80"
|
||||||
|
networks:
|
||||||
|
- hyperpipe
|
||||||
|
- traefik
|
||||||
|
healthcheck:
|
||||||
|
test: wget --no-verbose --tries=1 --spider http://localhost
|
||||||
|
entrypoint: sh -c 'find /usr/share/nginx/html -type f -exec sed -i s/pipedapi.kavin.rocks/pipedapi.domain.com/g {} \; -exec sed -i s/hyperpipeapi.onrender.com/hyperpipeapi.domain.com/g {} \; && /docker-entrypoint.sh && nginx -g "daemon off;"'
|
||||||
|
labels:
|
||||||
|
com.stack.name: "hyperpipe"
|
||||||
|
com.stack.service.name: "front"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8.0"
|
||||||
|
memory: 4G
|
||||||
|
pids: 8192
|
||||||
|
tmpfs:
|
||||||
|
- /tmp:rw,exec,size=1G
|
||||||
|
sysctls:
|
||||||
|
net.core.somaxconn: 8192
|
||||||
|
net.ipv4.tcp_syncookies: 0
|
Loading…
Reference in New Issue
Block a user