Mailman is loading
Signed-off-by: James Ketrenos <james_git@ketrenos.com>
This commit is contained in:
parent
d3f91889af
commit
e2af62042a
43
README.md
43
README.md
@ -1,18 +1,45 @@
|
|||||||
# ketreweb containers
|
# ketreweb containers
|
||||||
|
|
||||||
The cron job to update certificates isn't quite working yet.
|
| Container | Purpose |
|
||||||
|
|:----------------------|:-----------------------------------------------|
|
||||||
|
| ketrenet-web | Main webserver entry for https://ketrenos.com |
|
||||||
|
| ketrenet-mail | Email MTA and mailbox management |
|
||||||
|
| ketrenet-roundcube | Email web interface. https://mail.ketrenos.com |
|
||||||
|
| ketrenet-cron | Update letsencrypt keys, etc. |
|
||||||
|
| ketrenet-dns | DNS server |
|
||||||
|
| ketrenet-mailman-core | Mailman3 Core backend |
|
||||||
|
| ketrenet-mailman-web | Mailman3 Web frontend |
|
||||||
|
| ketrenet-database | Mailman3 Postgres DB |
|
||||||
|
|
||||||
To update certificates:
|
## Disk structure
|
||||||
|
|
||||||
|
| Directory | Purpose |
|
||||||
|
|:----------------------|:-----------------------------------------------|
|
||||||
|
| $PWD/data/$SERVICE | Logs, error reporting, databases |
|
||||||
|
| $SERVICE/etc | Configuration files for $SERVICE |
|
||||||
|
| $PWD/www | Web content hosted by ketrenet-web directly |
|
||||||
|
|
||||||
|
## Update certificates
|
||||||
|
|
||||||
|
The cron job to update certificates isn't quite working yet. To update
|
||||||
|
certificates:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec -it ketrenet-cron /bin/bash
|
docker exec -it ketrenet-cron /bin/bash
|
||||||
/usr/bin/certbot renew --no-self-upgrade --webroot -w /var/www/ketrenos.com
|
/usr/bin/certbot renew --no-self-upgrade --webroot \
|
||||||
/usr/bin/scp -q -i /keys/opnsense-letsencrypt /etc/letsencrypt/live/ketrenos.com/{fullchain,privkey}.pem letsencrypt@opnsense.ketrenos.com:.
|
-w /var/www/ketrenos.com
|
||||||
/usr/bin/ssh -i /keys/opnsense-letsencrypt letsencrypt@opnsense.ketrenos.com sudo ./update-cert.sh fullchain.pem privkey.pem
|
/usr/bin/scp -q \
|
||||||
|
-i /keys/opnsense-letsencrypt \
|
||||||
|
/etc/letsencrypt/live/ketrenos.com/{fullchain,privkey}.pem \
|
||||||
|
letsencrypt@opnsense.ketrenos.com:.
|
||||||
|
/usr/bin/ssh \
|
||||||
|
-i /keys/opnsense-letsencrypt \
|
||||||
|
letsencrypt@opnsense.ketrenos.com \
|
||||||
|
sudo ./update-cert.sh fullchain.pem privkey.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
After that completes (without errors) outside the container use `./sync-certs` to push
|
After that completes (without errors) outside the container use `./sync-certs`
|
||||||
the updated certificates to all the service containers and servers.
|
to push the updated certificates to all the service containers and servers.
|
||||||
|
|
||||||
## ketreweb
|
## ketreweb
|
||||||
|
|
||||||
@ -23,7 +50,7 @@ apache2 is only being used for mailman, which is currently offline
|
|||||||
|
|
||||||
## ketreweb-roundcube
|
## ketreweb-roundcube
|
||||||
|
|
||||||
default container for roundcube
|
default container for roundcube. Provides https://mail.ketrenos.com
|
||||||
|
|
||||||
## ketreweb-cron
|
## ketreweb-cron
|
||||||
|
|
||||||
|
@ -19,9 +19,13 @@ services:
|
|||||||
- /home/jketreno/docker/webserver/web/entrypoint.sh:/entrypoint.sh:ro
|
- /home/jketreno/docker/webserver/web/entrypoint.sh:/entrypoint.sh:ro
|
||||||
- /home/jketreno/docker/webserver/data/log:/var/log:rw
|
- /home/jketreno/docker/webserver/data/log:/var/log:rw
|
||||||
- /home/jketreno/docker/webserver/www:/var/www:ro
|
- /home/jketreno/docker/webserver/www:/var/www:ro
|
||||||
|
- /home/jketreno/docker/webserver/data/mailman/web/data/static:/opt/mailman/static:ro
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 80:80
|
||||||
- 443:443
|
- 443:443
|
||||||
|
networks:
|
||||||
|
ketrenet-mailman:
|
||||||
|
|
||||||
|
|
||||||
ketrenet-mail:
|
ketrenet-mail:
|
||||||
image: ketrenet-mail
|
image: ketrenet-mail
|
||||||
@ -91,6 +95,9 @@ services:
|
|||||||
- /home/jketreno/docker/webserver/roundcube/var/roundcube:/var/roundcube/config:ro
|
- /home/jketreno/docker/webserver/roundcube/var/roundcube:/var/roundcube/config:ro
|
||||||
- /home/jketreno/docker/webserver/data/roundcube/db:/var/roundcube/db:rw
|
- /home/jketreno/docker/webserver/data/roundcube/db:/var/roundcube/db:rw
|
||||||
- /home/jketreno/docker/webserver/data/roundcube/html:/var/www/html:rw
|
- /home/jketreno/docker/webserver/data/roundcube/html:/var/www/html:rw
|
||||||
|
networks:
|
||||||
|
ketrenet-mailman:
|
||||||
|
|
||||||
|
|
||||||
ketrenet-cron:
|
ketrenet-cron:
|
||||||
image: ketrenet-cron
|
image: ketrenet-cron
|
||||||
@ -140,11 +147,11 @@ services:
|
|||||||
- /home/jketreno/docker/webserver/data/mailman/core:/opt/mailman/
|
- /home/jketreno/docker/webserver/data/mailman/core:/opt/mailman/
|
||||||
stop_grace_period: 30s
|
stop_grace_period: 30s
|
||||||
links:
|
links:
|
||||||
- database:database
|
- ketrenet-database:ketrenet-database
|
||||||
depends_on:
|
depends_on:
|
||||||
- database
|
- ketrenet-database
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgresql://mailman:1mailm3np2ss@database/mailmandb
|
- DATABASE_URL=postgresql://mailman:mailmanpass@ketrenet-database/mailmandb
|
||||||
- DATABASE_TYPE=postgres
|
- DATABASE_TYPE=postgres
|
||||||
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
|
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
|
||||||
- HYPERKITTY_API_KEY=s0meap1k3y
|
- HYPERKITTY_API_KEY=s0meap1k3y
|
||||||
@ -161,16 +168,20 @@ services:
|
|||||||
hostname: mailman-web
|
hostname: mailman-web
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- database
|
- ketrenet-database
|
||||||
links:
|
links:
|
||||||
- mailman-core:mailman-core
|
- ketrenet-mailman-core:ketrenet-mailman-core
|
||||||
- database:database
|
- ketrenet-database:ketrenet-database
|
||||||
volumes:
|
volumes:
|
||||||
- /home/jketreno/docker/webserver/data/mailman/web:/opt/mailman-web-data
|
- /home/jketreno/docker/webserver/data/mailman/web/data:/opt/mailman-web-data
|
||||||
|
- /home/jketreno/docker/webserver/data/mailman/web/config:/opt/mailman-web
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_TYPE=postgres
|
- DATABASE_TYPE=postgres
|
||||||
- DATABASE_URL=postgresql://mailman:1mailm3np2ss@database/mailmandb
|
- DATABASE_URL=postgresql://mailman:mailmanpass@ketrenet-database/mailmandb
|
||||||
- HYPERKITTY_API_KEY=s0meap1k3y
|
- HYPERKITTY_API_KEY=s0meap1k3y
|
||||||
|
- SECRET_KEY=s7p4rs3kr1t
|
||||||
|
- SERVE_FROM_DOMAIN=ketrenos.com
|
||||||
|
- UWSGI_STATIC_MAP=/mailman/static=/opt/mailman-web-data/static
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8000:8000" # HTTP
|
- "127.0.0.1:8000:8000" # HTTP
|
||||||
- "127.0.0.1:8080:8080" # uwsgi
|
- "127.0.0.1:8080:8080" # uwsgi
|
||||||
@ -179,10 +190,11 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
ketrenet-database:
|
ketrenet-database:
|
||||||
|
container_name: ketrenet-database
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB=mailmandb
|
- POSTGRES_DB=mailmandb
|
||||||
- POSTGRES_USER=mailman
|
- POSTGRES_USER=mailman
|
||||||
- POSTGRES_PASSWORD=1mailm@np@ss
|
- POSTGRES_PASSWORD=mailmanpass
|
||||||
image: postgres:12-alpine
|
image: postgres:12-alpine
|
||||||
volumes:
|
volumes:
|
||||||
- /home/jketreno/docker/webserver/data/mailman/database:/var/lib/postgresql/data
|
- /home/jketreno/docker/webserver/data/mailman/database:/var/lib/postgresql/data
|
||||||
|
@ -40,7 +40,7 @@ SECRET_KEY = os.environ.get('SECRET_KEY')
|
|||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
ADMINS = (
|
ADMINS = (
|
||||||
('Mailman Suite Admin', 'root@localhost'),
|
('Mailman Suite Admin', 'james_mailman@ketrenos.com'),
|
||||||
)
|
)
|
||||||
|
|
||||||
SITE_ID = 1
|
SITE_ID = 1
|
||||||
@ -48,24 +48,26 @@ SITE_ID = 1
|
|||||||
# Hosts/domain names that are valid for this site; required if DEBUG is False
|
# Hosts/domain names that are valid for this site; required if DEBUG is False
|
||||||
# See https://docs.djangoproject.com/en/3.1/ref/settings/#allowed-hosts
|
# See https://docs.djangoproject.com/en/3.1/ref/settings/#allowed-hosts
|
||||||
ALLOWED_HOSTS = [
|
ALLOWED_HOSTS = [
|
||||||
|
"127.0.0.1",
|
||||||
"localhost", # Archiving API from Mailman, keep it.
|
"localhost", # Archiving API from Mailman, keep it.
|
||||||
"mailman-web",
|
"mailman-web",
|
||||||
|
"ketrenet-mailman-web",
|
||||||
os.environ.get('SERVE_FROM_DOMAIN'),
|
os.environ.get('SERVE_FROM_DOMAIN'),
|
||||||
]
|
]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ALLOWED_HOSTS.append(gethostbyname("mailman-web")) # only add if this resolves
|
ALLOWED_HOSTS.append(gethostbyname("ketrenet-mailman-web")) # only add if this resolves
|
||||||
except gaierror:
|
except gaierror:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
ALLOWED_HOSTS.extend(os.getenv("DJANGO_ALLOWED_HOSTS", "").split(","))
|
ALLOWED_HOSTS.extend(os.getenv("DJANGO_ALLOWED_HOSTS", "").split(","))
|
||||||
|
|
||||||
# Mailman API credentials
|
# Mailman API credentials
|
||||||
MAILMAN_REST_API_URL = os.environ.get('MAILMAN_REST_URL', 'http://mailman-core:8001')
|
MAILMAN_REST_API_URL = os.environ.get('MAILMAN_REST_URL', 'http://ketrenet-mailman-core:8001')
|
||||||
MAILMAN_REST_API_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin')
|
MAILMAN_REST_API_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin')
|
||||||
MAILMAN_REST_API_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass')
|
MAILMAN_REST_API_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass')
|
||||||
MAILMAN_ARCHIVER_KEY = os.environ.get('HYPERKITTY_API_KEY')
|
MAILMAN_ARCHIVER_KEY = os.environ.get('HYPERKITTY_API_KEY')
|
||||||
MAILMAN_ARCHIVER_FROM = (os.environ.get('MAILMAN_HOST_IP', gethostbyname(os.environ.get('MAILMAN_HOSTNAME', 'mailman-core'))),)
|
MAILMAN_ARCHIVER_FROM = (os.environ.get('MAILMAN_HOST_IP', gethostbyname(os.environ.get('MAILMAN_HOSTNAME', 'ketrenet-mailman-core'))),)
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
@ -198,7 +200,7 @@ USE_TZ = True
|
|||||||
|
|
||||||
STATIC_ROOT = '/opt/mailman-web-data/static'
|
STATIC_ROOT = '/opt/mailman-web-data/static'
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/mailman/static/'
|
||||||
|
|
||||||
# Additional locations of static files
|
# Additional locations of static files
|
||||||
|
|
||||||
@ -399,7 +401,7 @@ Q_CLUSTER = {
|
|||||||
'orm': 'default',
|
'orm': 'default',
|
||||||
}
|
}
|
||||||
|
|
||||||
POSTORIUS_TEMPLATE_BASE_URL = os.environ.get('POSTORIUS_TEMPLATE_BASE_URL', 'http://mailman-web:8000')
|
POSTORIUS_TEMPLATE_BASE_URL = os.environ.get('POSTORIUS_TEMPLATE_BASE_URL', 'http://ketrenet-mailman-web:8000')
|
||||||
|
|
||||||
DISKCACHE_PATH = os.environ.get('DISKCACHE_PATH', '/opt/mailman-web-data/diskcache')
|
DISKCACHE_PATH = os.environ.get('DISKCACHE_PATH', '/opt/mailman-web-data/diskcache')
|
||||||
DISKCACHE_SIZE = os.environ.get('DISKCACHE_SIZE', 2 ** 30) # 1 gigabyte
|
DISKCACHE_SIZE = os.environ.get('DISKCACHE_SIZE', 2 ** 30) # 1 gigabyte
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user