Skip to content

Commit c6119f0

Browse files
committed
add guacamole
1 parent 52e0e18 commit c6119f0

File tree

4 files changed

+892
-1
lines changed

4 files changed

+892
-1
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ A [proxy](https://en.wikipedia.org/wiki/Proxy_server) is a server application th
119119
- [Keycloak](https://github.com/keycloak/keycloak-containers/tree/main/docker-compose-examples) - Keycloak is an open-source Identity and Access Management (IAM) solution for modern applications and services.
120120
- [lldap](examples/lldap) - lldap is a lightweight authentication server that provides an opinionated, simplified LDAP interface for authentication. It integrates with many backends, from KeyCloak to Authelia to Nextcloud and more.
121121

122-
### Virtual Private Network (VPN)
122+
### Virtual Private Network (VPN) & Remote Access
123123

124124
**[`^ back to top ^`](#-project-list)**
125125

@@ -131,6 +131,7 @@ A [VPN](https://en.wikipedia.org/wiki/Virtual_private_network) is a mechanism fo
131131
- [Firezone](examples/firezone) - Self-hosted secure remote access gateway that supports the WireGuard protocol. It offers a Web GUI, 1-line install script, multi-factor auth (MFA), and SSO.
132132
- ~~[Netbird](https://github.com/netbirdio/netbird)~~ - Quickly connect your computers, servers, cloud instances, and IoT devices into a secure private network. No configuration required.
133133
- [Headscale](examples/headscale) - An open source, self-hosted implementation of the Tailscale control server.
134+
- [Guacamole](examples/guacamole) - Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, SSH and RDP.
134135

135136
### Domain Name Service (DNS)
136137

examples/guacamole/README.md

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# References
2+
3+
- https://hub.docker.com/r/guacamole/guacamole/
4+
5+
# Notes
6+
7+
Before spawning up the Docker Compose stack you have to pre-supply an `initdb.sql` initialization file for the Postgresql database.
8+
9+
The file is provided in this repository but can also be created dynamically via:
10+
11+
````
12+
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > initdb.sql
13+
````
14+
15+
Please go ahead and place this init file in the corresponding Docker Volume Bind Mount.
16+
17+
````
18+
mkdir -p /mnt/docker-volumes}/guacamole/psql/init
19+
20+
# move init file from this repo to the new location
21+
mv initdb.sql /mnt/docker-volumes}/guacamole/psql/init/.
22+
23+
# alternatively, create it dynamically and place it to the new location
24+
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > /mnt/docker-volumes}/guacamole/psql/init/initdb.sql
25+
````
26+
27+
Afterwards, you can spawn up the Docker stack as follows:
28+
29+
````
30+
docker compose up -d
31+
````
32+
33+
The Guacamole login is available at http://<YOUR-IP>:8080/guacamole.
34+
35+
The default username is `guacadmin`. The default password is `guacadmin`.

examples/guacamole/docker-compose.yml

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
version: '2.0'
2+
3+
services:
4+
5+
guacd:
6+
image: guacamole/guacd
7+
container_name: guacamole-guacd
8+
restart: always
9+
volumes:
10+
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/drive:/drive:rw
11+
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/guacd/record:/record:rw
12+
#networks:
13+
# - proxy
14+
15+
postgres:
16+
image: postgres:15.2-alpine
17+
container_name: guacamole-db
18+
restart: always
19+
environment:
20+
- PGDATA=/var/lib/postgresql/data/guacamole
21+
- POSTGRES_DB=guacamole_db
22+
- POSTGRES_PASSWORD=ChooseYourOwnPasswordHere1234
23+
- POSTGRES_USER=guacamole_user
24+
volumes:
25+
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/init:/docker-entrypoint-initdb.d:z
26+
- ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/guacamole/psql/data:/var/lib/postgresql/data:Z
27+
#networks:
28+
# - proxy
29+
30+
# guacamole
31+
guacamole:
32+
image: guacamole/guacamole
33+
container_name: guacamole-ui
34+
restart: always
35+
depends_on:
36+
- guacd
37+
- postgres
38+
environment:
39+
- GUACD_HOSTNAME=guacd
40+
- POSTGRES_DATABASE=guacamole_db
41+
- POSTGRES_HOSTNAME=postgres
42+
- POSTGRES_PASSWORD=ChooseYourOwnPasswordHere1234
43+
- POSTGRES_USER=guacamole_user
44+
links:
45+
- guacd
46+
ports:
47+
# Guacamole is on :8080/guacamole, not /.
48+
# Default login is guacadmin:guacadmin
49+
- 8080:8080/tcp
50+
expose:
51+
- 8080
52+
#networks:
53+
# - proxy
54+
#labels:
55+
# - traefik.enable=true
56+
# - traefik.docker.network=proxy
57+
# - traefik.http.routers.guacamole.rule=Host(`guacamole.example.com`)
58+
# - traefik.http.services.guacamole.loadbalancer.server.port=8080
59+
# # Optional part for traefik middlewares
60+
# - traefik.http.routers.guacamole.middlewares=local-ipwhitelist@file,authelia@docker
61+
62+
#networks:
63+
# proxy:
64+
# external: true

0 commit comments

Comments
 (0)