rename podman_ projects to container_
This commit is contained in:
8
active/container_caddy/Containerfile
Normal file
8
active/container_caddy/Containerfile
Normal file
@@ -0,0 +1,8 @@
|
||||
FROM docker.io/caddy:2-builder AS builder
|
||||
|
||||
RUN xcaddy build \
|
||||
--with github.com/caddy-dns/route53@v1.6.0
|
||||
|
||||
FROM docker.io/caddy:2
|
||||
|
||||
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||
18
active/container_caddy/caddy.container
Normal file
18
active/container_caddy/caddy.container
Normal file
@@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=Caddy
|
||||
|
||||
[Container]
|
||||
AddCapability=NET_ADMIN
|
||||
ContainerName=caddy
|
||||
Image=gitea.reeseapps.com/services/caddy:latest
|
||||
Network=host
|
||||
SecurityLabelDisable=true
|
||||
Volume=/etc/caddy:/etc/caddy
|
||||
Volume=caddy_data:/data
|
||||
Volume=caddy_config:/config
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
140
active/container_caddy/caddy.md
Normal file
140
active/container_caddy/caddy.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Caddy Reverse Proxy
|
||||
|
||||
- [Caddy Reverse Proxy](#caddy-reverse-proxy)
|
||||
- [Custom Caddy Image](#custom-caddy-image)
|
||||
- [Install Caddy](#install-caddy)
|
||||
- [Ansible](#ansible)
|
||||
- [Manual](#manual)
|
||||
- [Adding a new Caddy Record](#adding-a-new-caddy-record)
|
||||
|
||||
## Custom Caddy Image
|
||||
|
||||
This repo builds a custom caddy image with route53 DNS certbot support.
|
||||
|
||||
```bash
|
||||
podman image pull gitea.reeseapps.com/services/caddy:latest
|
||||
```
|
||||
|
||||
To upgrade the image, check [the caddy-dns route53
|
||||
project](https://github.com/caddy-dns/route53/tags) releases and update the
|
||||
`Containerfile` with the new version.
|
||||
|
||||
## Install Caddy
|
||||
|
||||
### Ansible
|
||||
|
||||
You'll need a secrets/Caddyfile with your caddy config.
|
||||
|
||||
`secrets/Caddyfile` example:
|
||||
|
||||
```conf
|
||||
https://something.reeseapps.com:443 {
|
||||
reverse_proxy internal.reeselink.com:8000
|
||||
}
|
||||
|
||||
https://something-else.reeseapps.com:443 {
|
||||
reverse_proxy internal-other.reeselink.com:8080
|
||||
}
|
||||
```
|
||||
|
||||
Make sure to add [your route53 configuration](https://github.com/caddy-dns/route53?tab=readme-ov-file#configuration)
|
||||
|
||||
```conf
|
||||
tls {
|
||||
dns route53 {
|
||||
access_key_id "..."
|
||||
secret_access_key "..."
|
||||
region "us-east-1"
|
||||
wait_for_route53_sync true
|
||||
skip_route53_sync_on_delete true
|
||||
route53_max_wait 2m
|
||||
max_retries 5
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The playbook limits the installer to `hosts: caddy` so make sure you have a caddy
|
||||
host in your inventory.
|
||||
|
||||
Now you can install the Caddy service with something like:
|
||||
|
||||
```bash
|
||||
# Base Proxy
|
||||
ansible-playbook \
|
||||
-i ansible/inventory.yaml \
|
||||
active/podman_caddy/install_caddy_proxy.yaml
|
||||
|
||||
# Deskwork (AI) Proxy
|
||||
ansible-playbook \
|
||||
-i ansible/inventory.yaml \
|
||||
active/podman_caddy/install_caddy_deskwork.yaml
|
||||
```
|
||||
|
||||
See ansible playbook [install_caddy.yaml](/active/podman_caddy/install_caddy.yaml)
|
||||
|
||||
### Manual
|
||||
|
||||
As root
|
||||
|
||||
```bash
|
||||
mkdir /etc/caddy
|
||||
vim /etc/caddy/Caddyfile
|
||||
```
|
||||
|
||||
Caddy will automatically provision certificates if the server DNS points to the correct IP
|
||||
and is accessible on the ports specifified. All you need to do is put `https` in the caddy conf.
|
||||
|
||||
Example:
|
||||
|
||||
```conf
|
||||
# Gitea
|
||||
https://gitea.reeseapps.com:443 {
|
||||
reverse_proxy podman.reeselink.com:3000
|
||||
}
|
||||
|
||||
# Jellyfin
|
||||
https://jellyfin.reeseapps.com:443 {
|
||||
reverse_proxy podman.reeselink.com:8096
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
vim /etc/containers/systemd/caddy.container
|
||||
```
|
||||
|
||||
```conf
|
||||
[Unit]
|
||||
Description=Caddy
|
||||
|
||||
[Container]
|
||||
AddCapability=NET_ADMIN
|
||||
ContainerName=caddy
|
||||
Image=docker.io/caddy:2
|
||||
Network=host
|
||||
SecurityLabelDisable=true
|
||||
Volume=/etc/caddy:/etc/caddy
|
||||
Volume=caddy_data:/data
|
||||
Volume=caddy_config:/config
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
systemctl restart caddy
|
||||
```
|
||||
|
||||
## Adding a new Caddy Record
|
||||
|
||||
Before you can create a Caddyfile you need records that point to your server.
|
||||
|
||||
You can either create them manually in your DNS provider of choice or use the provided
|
||||
ddns service:
|
||||
|
||||
1. Update the [ddns caddy records](/active/podman_ddns/secrets/caddy_records.yaml)
|
||||
2. (Optional) Update the Caddyfile at `active/podman_caddy/secrets/Caddyfile`
|
||||
3. Run the [caddy ansible playbook](/active/podman_caddy/caddy.md#install-caddy)
|
||||
28
active/container_caddy/install_caddy_deskwork.yaml
Normal file
28
active/container_caddy/install_caddy_deskwork.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
- name: Create Caddy Proxy
|
||||
hosts: deskwork-root
|
||||
tasks:
|
||||
- name: Create /etc/caddy dir
|
||||
ansible.builtin.file:
|
||||
path: /etc/caddy
|
||||
state: directory
|
||||
mode: '0755'
|
||||
- name: Copy Caddyfile
|
||||
template:
|
||||
src: secrets/deskwork.Caddyfile
|
||||
dest: /etc/caddy/Caddyfile
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
- name: Template Caddy Container Services
|
||||
template:
|
||||
src: caddy.container
|
||||
dest: /etc/containers/systemd/caddy.container
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
- name: Reload and start the Caddy service
|
||||
ansible.builtin.systemd_service:
|
||||
state: restarted
|
||||
name: caddy.service
|
||||
enabled: true
|
||||
daemon_reload: true
|
||||
38
active/container_caddy/install_caddy_proxy.yaml
Normal file
38
active/container_caddy/install_caddy_proxy.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
- name: Create Caddy Proxy
|
||||
hosts: caddy
|
||||
tasks:
|
||||
- name: Copy Containerfile for build
|
||||
template:
|
||||
src: Containerfile
|
||||
dest: /etc/caddy/Containerfile
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
- name: Build Caddy Image
|
||||
shell:
|
||||
cmd: podman build -t gitea.reeseapps.com/services/caddy:latest -f /etc/caddy/Containerfile
|
||||
- name: Create /etc/caddy dir
|
||||
ansible.builtin.file:
|
||||
path: /etc/caddy
|
||||
state: directory
|
||||
mode: '0755'
|
||||
- name: Copy Caddyfile
|
||||
template:
|
||||
src: secrets/proxy.Caddyfile
|
||||
dest: /etc/caddy/Caddyfile
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
- name: Template Caddy Container Services
|
||||
template:
|
||||
src: caddy.container
|
||||
dest: /etc/containers/systemd/caddy.container
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
- name: Reload and start the Caddy service
|
||||
ansible.builtin.systemd_service:
|
||||
state: restarted
|
||||
name: caddy.service
|
||||
enabled: true
|
||||
daemon_reload: true
|
||||
Reference in New Issue
Block a user