Add Installation
parent
2b74b04098
commit
18205bd79d
302
Installation.md
Normal file
302
Installation.md
Normal file
@ -0,0 +1,302 @@
|
||||
# Prerequisites
|
||||
|
||||
Clearing houz (clrghouz) is current configured to run on Linux systems under docker. The docker host only needs to have docker installed, and networking configured.
|
||||
|
||||
If you have a single IPv4 address, your docker host will receive connections (on appropriate web and FTN ports), and proxy those connections through to the docker containers that respond to those ports.
|
||||
|
||||
If you have IPv6, then the docker containers can be configured with a public IPv6 address and receive connections directly.
|
||||
|
||||
## Installing Docker
|
||||
|
||||
It is recommended to install docker from docker directly (as often linux distribution implementations are often behind the current release). To do so, it can be achieved with a simple command:
|
||||
|
||||
`curl -sSL https://get.docker.com | sudo sh`
|
||||
|
||||
To test that installation was successful, run `sudo docker info` and you should see something similar to below:
|
||||
|
||||
```plaintext
|
||||
Client: Docker Engine - Community
|
||||
Version: 24.0.6
|
||||
Context: default
|
||||
Debug Mode: false
|
||||
Plugins:
|
||||
buildx: Docker Buildx (Docker Inc.)
|
||||
Version: v0.11.2
|
||||
Path: /usr/libexec/docker/cli-plugins/docker-buildx
|
||||
compose: Docker Compose (Docker Inc.)
|
||||
Version: v2.21.0
|
||||
Path: /usr/libexec/docker/cli-plugins/docker-compose
|
||||
|
||||
Server:
|
||||
Containers: 4
|
||||
Running: 2
|
||||
Paused: 0
|
||||
Stopped: 2
|
||||
...
|
||||
Docker Root Dir: /var/lib/docker
|
||||
Debug Mode: false
|
||||
Experimental: false
|
||||
Insecure Registries:
|
||||
127.0.0.0/8
|
||||
Live Restore Enabled: false
|
||||
```
|
||||
|
||||
## Running docker as a user
|
||||
|
||||
Normally docker commands can only be run as the `root` user. However, to run docker commands with your (non-root) user id - add your user to the `docker` group.
|
||||
|
||||
`sudo usermod -aG docker [your_user_id]`
|
||||
|
||||
will do it. You'll need to log off and log on again for it to be effective.
|
||||
|
||||
You can confirm with `id`
|
||||
|
||||
```
|
||||
[deon@c-8-1 php]$ id fred
|
||||
uid=500(fred) gid=500(admin) groups=500(admin),10(wheel),27(sudo),498(docker)
|
||||
```
|
||||
|
||||
(In the above example, you can see `fred` is a member of GID: 498 `docker`.)
|
||||
|
||||
## Storage directory
|
||||
|
||||
You will want all your data to persist between container restarts. Create a directory to store all the container directory - something like `/srv/docker` (or something you prefer).
|
||||
|
||||
## Storage space
|
||||
|
||||
Make sure your docker container directory (`/srv/docker`) and `/var/lib/docker` has sufficient space.
|
||||
|
||||
If your linux doesnt use mount points, and all your space is mounted under `/`, then you should be OK. But if you do have mount points, then you'll need to have lots of space reserved for those directories.
|
||||
|
||||
## Create a directory for Clearing houz
|
||||
|
||||
In your storage directory (`/srv/docker`) create a directory to store Clearing houz files (eg:`/srv/docker/clrghouz`). Everything from here on will assume you are working from this directory.
|
||||
|
||||
### docker compose
|
||||
|
||||
To make restarting containers easier, here is a docker compose file that you can use - this will go in your Clearing houz directory. Make adjustments as appropriate.
|
||||
|
||||
```plaintext
|
||||
version: "3.5"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: registry.dege.au/bbs/clrghouz
|
||||
#cap_add:
|
||||
# SYS_ADMIN
|
||||
# NET_ADMIN
|
||||
# NET_RAW
|
||||
depends_on:
|
||||
- postgres
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
#devices:
|
||||
# /dev/net/tun
|
||||
environment:
|
||||
APP_KEY: [APP_KEY]
|
||||
APP_TIMEZONE: Australia/Melbourne
|
||||
APP_URL: https://clrghouz.test.dege.au/
|
||||
AWS_ACCESS_KEY_ID: "[MINIO_ACCESS_KEY]"
|
||||
AWS_SECRET_ACCESS_KEY: "[MINIO_SECRET_KEY]"
|
||||
AWS_ENDPOINT: http://minio:9000/
|
||||
AWS_BUCKET: clrghouz
|
||||
DB_PASSWORD: "[DB_PASSWORD]"
|
||||
FIDO_PACKET_KEEP: "true"
|
||||
FIDO_HAPROXY: "false"
|
||||
LOG_LEVEL: info
|
||||
MAIL_FROM_ADDRESS: your@email.address
|
||||
MAIL_FROM_NAME: "YOUR NAME"
|
||||
MEMCACHED_START: "TRUE"
|
||||
#ZEROTIER_START: "false"
|
||||
networks:
|
||||
default:
|
||||
public:
|
||||
ipv6_address: [IPv6_PREFIX]:0d0c:e02::2
|
||||
aliases:
|
||||
- clrghouz
|
||||
hostname: clrghouz.test.dege.au
|
||||
ports:
|
||||
- 53:53/udp
|
||||
#- 80:80
|
||||
#- 24554:24554
|
||||
#- 60179:60179
|
||||
sysctls:
|
||||
- "net.ipv6.conf.all.disable_ipv6=0"
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/app/cache:/var/www/html/storage/framework/cache/data
|
||||
- /srv/docker/clrghouz/app/sessions:/var/www/html/storage/framework/sessions
|
||||
- /srv/docker/clrghouz/app/logs:/var/www/html/storage/logs
|
||||
- /srv/docker/clrghouz/app/data:/var/www/html/data
|
||||
- /srv/docker/clrghouz/app/fido:/var/www/html/storage/app/fido
|
||||
# /srv/docker/clrghouz/zerotier:/var/lib/zerotier-one
|
||||
|
||||
queue:
|
||||
image: registry.dege.au/bbs/clrghouz
|
||||
#cap_add:
|
||||
# SYS_ADMIN
|
||||
# NET_ADMIN
|
||||
depends_on:
|
||||
- postgres
|
||||
deploy:
|
||||
replicas: 1
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
#devices:
|
||||
# /dev/net/tun
|
||||
environment:
|
||||
APP_KEY: [APP_KEY]
|
||||
APP_TIMEZONE: Australia/Melbourne
|
||||
APP_URL: https://clrghouz.test.dege.au/
|
||||
AWS_ACCESS_KEY_ID: "[MINIO_ACCESS_KEY]"
|
||||
AWS_SECRET_ACCESS_KEY: "[MINIO_SECRET_KEY]"
|
||||
AWS_ENDPOINT: http://minio:9000/
|
||||
AWS_BUCKET: clrghouz
|
||||
CACHE_DRIVER: file
|
||||
CONTAINER_ROLE: queue
|
||||
DB_PASSWORD: "[DB_PASSWORD]"
|
||||
LOG_LEVEL: info
|
||||
MAIL_FROM_ADDRESS: your@email.address
|
||||
MAIL_FROM_NAME: "YOUR NAME"
|
||||
WORK_QUEUES: default,poll,tic
|
||||
WORK_TIMEOUT: 900
|
||||
#ZEROTIER_START: "false"
|
||||
networks:
|
||||
default:
|
||||
public:
|
||||
ipv6_address: [IPv6_PREFIX]:0d0c:e02::3
|
||||
sysctls:
|
||||
- "net.ipv6.conf.all.disable_ipv6=0"
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/app/logs:/var/www/html/storage/logs
|
||||
- /srv/docker/clrghouz/app/fido:/var/www/html/storage/app/fido
|
||||
# /srv/docker/clrghouz/zerotier.queue:/var/lib/zerotier-one
|
||||
|
||||
schedule:
|
||||
image: registry.dege.au/bbs/clrghouz
|
||||
deploy:
|
||||
replicas: 1
|
||||
resources:
|
||||
limits:
|
||||
memory: 128M
|
||||
depends_on:
|
||||
- postgres
|
||||
environment:
|
||||
APP_KEY: [APP_KEY]
|
||||
APP_TIMEZONE: Australia/Melbourne
|
||||
APP_URL: https://clrghouz.test.dege.au/
|
||||
CACHE_DRIVER: file
|
||||
CONTAINER_ROLE: scheduler
|
||||
DB_PASSWORD: "[DB_PASSWORD]"
|
||||
networks:
|
||||
default:
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/app/logs:/var/www/html/storage/logs
|
||||
- /srv/docker/clrghouz/app/fido:/var/www/html/storage/app/fido
|
||||
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
environment:
|
||||
POSTGRES_DB: clrghouz
|
||||
POSTGRES_USER: clrghouz
|
||||
POSTGRES_PASSWORD: "[DB_PASSWORD]"
|
||||
networks:
|
||||
default:
|
||||
#labels:
|
||||
# cron.container.daily: "root#pg_dumpall -U clrghouz#S3_BUCKET=restic.docker restic -q --no-cache backup --stdin --stdin-filename docker-clrghouz-database"
|
||||
# backup.stack.daily: "/srv/docker/clrghouz"
|
||||
shm_size: 1g
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/postgres:/var/lib/postgresql/data
|
||||
|
||||
minio:
|
||||
image: tobi312/minio
|
||||
command: ["server", "--console-address", ":9001", "/data"]
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 128M
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "--fail", "http://localhost:9000/minio/health/live" ]
|
||||
interval: 60s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
networks:
|
||||
default:
|
||||
ports:
|
||||
- 9001:9001 # Console
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/minio:/data
|
||||
|
||||
haproxy:
|
||||
image: haproxy
|
||||
command: -f /usr/local/etc/haproxy/config
|
||||
#cap_add:
|
||||
#- NET_ADMIN
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 128M
|
||||
hostname: hap-1-1.test.dege.au
|
||||
networks:
|
||||
default:
|
||||
public:
|
||||
ipv6_address: [IPv6_PREFIX]:0d0c:e02::f
|
||||
ports:
|
||||
- "24553:24553"
|
||||
- "24554:24554"
|
||||
- "60179:60179"
|
||||
# "53:53/udp"
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- /srv/docker/clrghouz/haproxy:/usr/local/etc/haproxy/config
|
||||
- /srv/docker/clrghouz/nginx/ssl/:/usr/local/etc/haproxy/ssl
|
||||
|
||||
networks:
|
||||
public:
|
||||
enable_ipv6: true
|
||||
driver: bridge
|
||||
driver_opts:
|
||||
com.docker.network.enable_ipv6: "true"
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: [IPv6_PREFIX]:0d0c:e02::/96
|
||||
gateway: [IPv6_PREFIX]:0d0c:e02::1
|
||||
```
|
||||
|
||||
_NOTES:_
|
||||
|
||||
* This docker compose file should be called `docker-compose.yml`
|
||||
* You'll defined the `[APP_KEY]` below
|
||||
* Update the `[IPv6_PREFIX]` as appropriate for your setup. This assumes you have your IPv6 setup, and you have configured your router to route this prefix to this host running clrghouz.
|
||||
* Create a suitable `[DB_PASSWORD]` and update your docker-compose file.
|
||||
* We'll define `[MINIO_ACCESS_KEY]` and `[MINIO_SECRET_KEY]` later - and you'll update your docker-compose file with those details.
|
||||
* If you dont want to use haproxy, then you can comment/delete out this section in the docker-compose file. You'll also need to uncomment the post definitions in the _web:_ section.
|
||||
* If you dont want to use nginx, or already have nginx as a front end to your web hosts elsewhere, then you can comment/delete it from your docker-compose file. (You'll configure your existing nginx to terminate SSL and/or proxy to the _web:_ container on port 80.)
|
||||
|
||||
### Make necessary directories
|
||||
|
||||
```plaintext
|
||||
# mkdir app app/cache app/data app/fido app/logs app/sessions haproxy minio postgres nginx
|
||||
# sudo chown -R 82:82 app/
|
||||
```
|
||||
|
||||
### Create the app encryption key
|
||||
|
||||
```plaintext
|
||||
# docker run --rm -e CONTAINER_ROLE=none -e APP_TIMEZONE=UTC registry.dege.au/bbs/clrghouz ./artisan key:generate --show
|
||||
|
||||
* Starting NGINX...
|
||||
? NO container role "none", AND/OR no laravel install, just starting php-fpm
|
||||
base64:iT+8vM9p0X8oupGPKF+/ZqAxqyIQY5dWd72TaAlfcdY= <--- WHAT IS HERE IS YOUR KEY
|
||||
```
|
||||
|
||||
And update the docker-compose file and replace `[APP_KEY]` with this key.
|
Loading…
Reference in New Issue
Block a user