diff --git a/caddy/.env.example b/caddy/.env.example
index 5cb304e..3bddf3d 100644
--- a/caddy/.env.example
+++ b/caddy/.env.example
@@ -30,3 +30,6 @@ IMMICH_DOMAIN=
############# Uptime Kuma #############
UPTIME_KUMA_DOMAIN=
+
+############# Stalwart #############
+STALWART_DOMAIN=
diff --git a/caddy/Caddyfile b/caddy/Caddyfile
index 47a74b1..13c786a 100644
--- a/caddy/Caddyfile
+++ b/caddy/Caddyfile
@@ -122,4 +122,13 @@
}
}
+############## stalwart ##############
+{$STALWART_DOMAIN} {
+ request_body {
+ max_size 4048MB
+ }
+
+ reverse_proxy http://stalwart:8080
+}
+
import Caddyfile.private
diff --git a/glance/assets/ghost.png b/glance/assets/ghost.png
deleted file mode 100644
index 8ade814..0000000
Binary files a/glance/assets/ghost.png and /dev/null differ
diff --git a/glance/assets/gitea.svg b/glance/assets/gitea.svg
deleted file mode 100644
index 7ed0012..0000000
--- a/glance/assets/gitea.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/glance/assets/immich.png b/glance/assets/immich.png
deleted file mode 100644
index cbdc20b..0000000
Binary files a/glance/assets/immich.png and /dev/null differ
diff --git a/glance/assets/memos.png b/glance/assets/memos.png
deleted file mode 100644
index 029df08..0000000
Binary files a/glance/assets/memos.png and /dev/null differ
diff --git a/glance/assets/seradar.png b/glance/assets/seradar.png
deleted file mode 100644
index 37e44e4..0000000
Binary files a/glance/assets/seradar.png and /dev/null differ
diff --git a/glance/assets/sftpgo.png b/glance/assets/sftpgo.png
deleted file mode 100644
index a1cd936..0000000
Binary files a/glance/assets/sftpgo.png and /dev/null differ
diff --git a/glance/assets/slash.svg b/glance/assets/slash.svg
deleted file mode 100644
index 321ec9d..0000000
--- a/glance/assets/slash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/glance/assets/uptime_kuma.png b/glance/assets/uptime_kuma.png
deleted file mode 100644
index 2adfffc..0000000
Binary files a/glance/assets/uptime_kuma.png and /dev/null differ
diff --git a/glance/assets/vaultwarden.svg b/glance/assets/vaultwarden.svg
deleted file mode 100644
index 44362ef..0000000
--- a/glance/assets/vaultwarden.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/glance/assets/wireguard.png b/glance/assets/wireguard.png
deleted file mode 100644
index a0c17e8..0000000
Binary files a/glance/assets/wireguard.png and /dev/null differ
diff --git a/glance/config/home.yml b/glance/config/home.yml
index 8ac2d84..24ae0eb 100644
--- a/glance/config/home.yml
+++ b/glance/config/home.yml
@@ -7,41 +7,6 @@
- type: local
name: Services
- - type: monitor
- cache: 1s
- title: Services
- sites:
- - title: seradar.net
- url: https://seradar.net/auth
- icon: /assets/seradar.png
- - title: git.aykhans.me
- url: https://git.aykhans.me/aykhans
- icon: /assets/gitea.svg
- - title: ftp.aykhans.me
- url: https://ftp.aykhans.me/web/client/login
- icon: /assets/sftpgo.png
- - title: notes.aykhans.me
- url: https://notes.aykhans.me/signin
- icon: /assets/memos.png
- - title: url.aykhans.me
- url: https://url.aykhans.me/auth
- icon: /assets/slash.svg
- - title: vault.aykhans.me
- url: https://vault.aykhans.me/#/login
- icon: /assets/vaultwarden.svg
- - title: wg.aykhans.me
- url: https://wg.aykhans.me/
- icon: /assets/wireguard.png
- - title: photos.aykhans.me
- url: https://photos.aykhans.me/
- icon: /assets/immich.png
- - title: up.aykhans.me
- url: https://up.aykhans.me/
- icon: /assets/uptime_kuma.png
- - title: aykhans.me
- url: https://aykhans.me/
- icon: /assets/ghost.png
-
- type: docker-containers
cache: 0s
hide-by-default: false
@@ -68,6 +33,7 @@
- grafana/grafana
- TryGhost/Ghost
- schollz/croc
+ - stalwartlabs/stalwart
- size: full
widgets:
diff --git a/glance/docker-compose.yml b/glance/docker-compose.yml
index 2f81565..4b82042 100644
--- a/glance/docker-compose.yml
+++ b/glance/docker-compose.yml
@@ -1,6 +1,4 @@
networks:
- glance:
- external: false
caddy:
name: caddy
driver: bridge
diff --git a/main.sh b/main.sh
index a8a9687..4048317 100755
--- a/main.sh
+++ b/main.sh
@@ -219,6 +219,15 @@ start_services() {
print_error "failed to start Watchtower!"
exit 1
fi
+
+ echo "Starting stalwart..."
+ $DOCKER_COMPOSE_COMMAND -f ./stalwart/docker-compose.yaml up --pull -d
+ if [ $? -eq 0 ]; then
+ print_success "Stalwart started successfully."
+ else
+ print_error "failed to start Stalwart!"
+ exit 1
+ fi
}
stop_services() {
@@ -365,6 +374,15 @@ stop_services() {
print_error "failed to stop Watchtower!"
exit 1
fi
+
+ echo "Stopping stalwart..."
+ $DOCKER_COMPOSE_COMMAND -f ./stalwart/docker-compose.yaml down
+ if [ $? -eq 0 ]; then
+ print_success "Stalwart stopped successfully."
+ else
+ print_error "failed to stop Stalwart!"
+ exit 1
+ fi
}
if [ $# -lt 1 ]; then
diff --git a/stalwart/.gitignore b/stalwart/.gitignore
new file mode 100644
index 0000000..394be19
--- /dev/null
+++ b/stalwart/.gitignore
@@ -0,0 +1,2 @@
+/data/*
+!.gitkeep
diff --git a/glance/assets/user.css b/stalwart/data/.gitkeep
similarity index 100%
rename from glance/assets/user.css
rename to stalwart/data/.gitkeep
diff --git a/stalwart/docker-compose.yaml b/stalwart/docker-compose.yaml
new file mode 100644
index 0000000..31ddd94
--- /dev/null
+++ b/stalwart/docker-compose.yaml
@@ -0,0 +1,28 @@
+networks:
+ caddy:
+ name: caddy
+ driver: bridge
+ external: true
+
+services:
+ stalwart:
+ image: stalwartlabs/stalwart:v0.14
+ container_name: stalwart
+ restart: unless-stopped
+ labels:
+ - "com.centurylinklabs.watchtower.enable=true"
+ networks:
+ - caddy
+ ports:
+ - "25:25"
+ - "587:587"
+ - "465:465"
+ - "143:143"
+ - "993:993"
+ - "4190:4190"
+ - "110:110"
+ - "995:995"
+ volumes:
+ - ./data:/opt/stalwart
+ - ../caddy/data/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.aykhans.me/mail.aykhans.me.crt:/opt/stalwart/cert/mail.aykhans.me.pem
+ - ../caddy/data/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.aykhans.me/mail.aykhans.me.key:/opt/stalwart/cert/mail.aykhans.me.priv.pem