demo preliminare

This commit is contained in:
Paolo Asperti 2023-04-29 22:06:35 +02:00
parent 4c89ae647f
commit 59b4ecc0ea
Signed by: paspo
GPG Key ID: 06D46905D19D5182
14 changed files with 1681 additions and 0 deletions

44
demo/README.md Normal file
View File

@ -0,0 +1,44 @@
# setup iniziale
## container
Eseguire lo script `init.sh` per creare le directory di storage e i vari secret.
Eseguire lo script `tira_su_tutto.sh`.
## proxy
Se si sta usando un server remoto, accedere tramite SSH ed inoltrare la porta 81.
```sh
ssh utente@server -L 81:127.0.0.1:81
```
Accedere all'[interfaccia di amministrazione](http://127.0.0.1:81) con le credenziali di default:
- Email: `admin@example.com`
- Password: `changeme`
Creare un Proxy Host con questi parametri:
- Dominio: `auth.esempio.com`
- Schema: `http`
- Hostname: `authelia`
- Porta: `9091`
Creare un altro Proxy Host con questi parametri:
- Dominio: `claudia.esempio.com`
- Schema: `http`
- Hostname: `nextcloud`
- Porta: `80`
NB: attivare https, altrimenti authelia non va...
## authelia
Accedi ad authelia all'indirizzo configurato prima, con queste credenziali:
- Utente: `authelia`
- Password: `authelia`

2
demo/authelia/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
config/*
!config/configuration.yml

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
version: "3.9"
services:
authelia:
image: authelia/authelia
container_name: authelia
volumes:
- ./config:/config
networks:
- proxy_backend
expose:
- 9091
restart: always
environment:
- TZ=Europe/Rome
networks:
proxy_backend:
external: true
driver: bridge

14
demo/clear.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/sh
MYDIR=$(dirname $0)
source "${MYDIR}/config.vars"
sudo rm -rf \
"${MYDIR}/proxy/data" \
"${MYDIR}/proxy/letsencrypt" \
"${MYDIR}/authelia/config" \
"${MYDIR}/nextcloud/nextcloud_data" \
"${MYDIR}/nextcloud/nextcloud_config" \
"${MYDIR}/nextcloud/db" \
"${MYDIR}/nextcloud/.env" \
"${MYDIR}/nextcloud/redis"

3
demo/config.vars Normal file
View File

@ -0,0 +1,3 @@
AUTH_SERVICE=authelia
PROXY_SERVICE=proxy
OTHER_SERVICES=nextcloud

31
demo/init.sh Normal file
View File

@ -0,0 +1,31 @@
#!/bin/sh
which pwgen >/dev/null || (
echo Per favore, installa pwgen
exit 1
)
MYDIR=$(dirname $0)
source "${MYDIR}/config.vars"
mkdir -p \
"${MYDIR}/proxy/data" \
"${MYDIR}/proxy/letsencrypt" \
"${MYDIR}/authelia/config" \
"${MYDIR}/nextcloud/nextcloud_data" \
"${MYDIR}/nextcloud/nextcloud_config" \
"${MYDIR}/nextcloud/db" \
"${MYDIR}/nextcloud/redis"
sudo chown -R 1000:1000 \
"${MYDIR}/nextcloud/nextcloud_data" \
"${MYDIR}/nextcloud/nextcloud_config"
if [ ! -f "${MYDIR}/nextcloud/.env" ] ; then
cat >"${MYDIR}/nextcloud/.env" <<EOF
MYSQL_ROOT_PASSWORD=$(pwgen -s 14 1)
MYSQL_DATABASE=$(pwgen -s 14 1)
MYSQL_USER=$(pwgen -s 14 1)
MYSQL_PASSWORD=$(pwgen -s 14 1)
EOF
fi

5
demo/nextcloud/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
db/
nextcloud_config/
nextcloud_data/
redis/
.env

View File

@ -0,0 +1,56 @@
version: "3.9"
services:
nextcloud:
image: linuxserver/nextcloud:latest
container_name: nextcloud
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
- REDIS_HOST=redis
volumes:
- ./nextcloud_data:/data
- ./nextcloud_config:/config
restart: always
expose:
- 80:80
networks:
- proxy_backend
- default
depends_on:
- db
- redis
links:
- db
- redis
db:
image: mariadb:10
# --innodb-read-only-compressed=OFF
# https://github.com/nextcloud/server/issues/27085
container_name: nextcloud_db
command: --log-bin=mysqld-bin --binlog-format=ROW --innodb=on --innodb_file_per_table=1
restart: always
expose:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- ./db:/var/lib/mysql
redis:
image: redis:latest
container_name: nextcloud_redis
restart: always
volumes:
- ./redis:/data
networks:
proxy_backend:
external: true
name: proxy_backend

2
demo/proxy/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
data/
letsencrypt/

View File

@ -0,0 +1,30 @@
version: "3.9"
services:
proxy:
image: jc21/nginx-proxy-manager:latest
container_name: proxy
restart: always
ports:
- 80:80
- 443:443
- 127.0.0.1:81:81 # console di gestione non esposta, si usa port redirect di ssh, oppure si crea un dominio dedicato
networks:
- default
- proxy_backend
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- ./logrotate.conf:/etc/logrotate.d/proxy_access
healthcheck:
test: ["CMD", "/bin/check-health"]
interval: 10s
timeout: 3s
networks:
proxy_backend:
external: false
name: proxy_backend
driver: bridge

12
demo/proxy/logrotate.conf Normal file
View File

@ -0,0 +1,12 @@
/data/logs/proxy_host*.log {
create 0644 root root
weekly
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}

10
demo/tira_giu_tutto.sh Normal file
View File

@ -0,0 +1,10 @@
#!/bin/sh
MYDIR=$(dirname $0)
source "${MYDIR}/config.vars"
for service in ${OTHER_SERVICES} ${AUTH_SERVICE} ${PROXY_SERVICE} ; do
cd "${MYDIR}/${service}"
docker compose down
cd -
done

11
demo/tira_su_tutto.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/sh
MYDIR=$(dirname $0)
source "${MYDIR}/config.vars"
for service in ${PROXY_SERVICE} ${AUTH_SERVICE} ${OTHER_SERVICES} ; do
cd "${MYDIR}/${service}"
docker compose up -d
cd -
done