mirror of https://github.com/MISP/misp-docker
Add podman-systemd support
parent
b033daec4f
commit
b4b55f149c
65
README.md
65
README.md
|
|
@ -130,6 +130,71 @@ Custom root CA certificates can be mounted under `/usr/local/share/ca-certificat
|
||||||
- "./rootca.pem:/usr/local/share/ca-certificates/rootca.crt"
|
- "./rootca.pem:/usr/local/share/ca-certificates/rootca.crt"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Podman
|
||||||
|
|
||||||
|
### Use Podman-systemd instead of Docker to:
|
||||||
|
|
||||||
|
- Run containers in **rootless** mode
|
||||||
|
- Manage containers with **systemd**
|
||||||
|
- Write container descriptions in an **ignition** file and deploy them to an OS like **Fedora CoreOS** or similar (not covered in this documentation)
|
||||||
|
|
||||||
|
### Copy the following directories and files:
|
||||||
|
|
||||||
|
- Files from `podman-systemd` to `$USER/.config/containers/systemd/`
|
||||||
|
- `template.vars` to `$USER/.config/containers/systemd/vars.env`
|
||||||
|
|
||||||
|
### Change the necessary DB variables in `vars.env`:
|
||||||
|
|
||||||
|
```
|
||||||
|
MYSQL_HOST=
|
||||||
|
MYSQL_USER=
|
||||||
|
MYSQL_PASSWORD=
|
||||||
|
MYSQL_ROOT_PASSWORD=
|
||||||
|
MYSQL_DATABASE=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Set the Redis password:
|
||||||
|
|
||||||
|
```
|
||||||
|
REDIS_PASSWORD=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Set the base URL:
|
||||||
|
|
||||||
|
```
|
||||||
|
BASE_URL=https://<IP>:10443
|
||||||
|
```
|
||||||
|
|
||||||
|
### Reload systemd user daemon:
|
||||||
|
|
||||||
|
```
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start services:
|
||||||
|
|
||||||
|
```
|
||||||
|
systemctl --user start misp-mail.service
|
||||||
|
systemctl --user start misp-db.service
|
||||||
|
systemctl --user start misp-redis.service
|
||||||
|
systemctl --user start misp-core.service
|
||||||
|
systemctl --user start misp-modules.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Wait a bit and check your service at https://<IP>:10443
|
||||||
|
|
||||||
|
### To make services persistent across reboots and logouts:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo loginctl enable-linger $USER
|
||||||
|
```
|
||||||
|
|
||||||
|
### To enable Podman to periodically check for new container versions, activate the specific timer `podman-auto-update.timer`:
|
||||||
|
|
||||||
|
```
|
||||||
|
systemctl --user enable podman-auto-update.timer --now
|
||||||
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
- Make sure you run a fairly recent version of Docker and Docker Compose (if in doubt, update following the steps outlined in https://docs.docker.com/engine/install/ubuntu/)
|
- Make sure you run a fairly recent version of Docker and Docker Compose (if in doubt, update following the steps outlined in https://docs.docker.com/engine/install/ubuntu/)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=certs
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=conf
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
[Unit]
|
||||||
|
Description=MISP Database system
|
||||||
|
Requires=misp-net-network.service
|
||||||
|
After=misp-net-network.service
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
AutoUpdate=registry
|
||||||
|
ContainerName=db
|
||||||
|
Image=docker.io/library/mariadb:10.11
|
||||||
|
Network=misp-net
|
||||||
|
Volume=mysql_data:/var/lib/mysql
|
||||||
|
PodmanArgs=--network-alias db
|
||||||
|
EnvironmentFile=vars.env
|
||||||
|
AddCapability=SYS_NICE
|
||||||
|
HealthCmd=mysqladmin --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} status
|
||||||
|
HealthInterval=2s
|
||||||
|
HealthTimeout=1s
|
||||||
|
HealthRetries=3
|
||||||
|
HealthStartPeriod=30s
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=%h/.config/containers/systemd/vars.env
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=files
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=gpg
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=logs
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=MISP Mail system
|
||||||
|
Requires=misp-net-network.service
|
||||||
|
After=misp-net-network.service
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
AutoUpdate=registry
|
||||||
|
ContainerName=mail
|
||||||
|
Image=docker.io/ixdotai/smtp
|
||||||
|
Network=misp-net
|
||||||
|
PodmanArgs=--network-alias mail
|
||||||
|
EnvironmentFile=vars.env
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
[Unit]
|
||||||
|
Description=MISP Core
|
||||||
|
After=db.service
|
||||||
|
After=redis.service
|
||||||
|
Requires=db.service
|
||||||
|
Requires=redis.service
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
AutoUpdate=registry
|
||||||
|
ContainerName=misp-core
|
||||||
|
Image=ghcr.io/misp/misp-docker/misp-core:latest
|
||||||
|
PublishPort=10443:443
|
||||||
|
Network=misp-net
|
||||||
|
PodmanArgs=--network-alias misp-core
|
||||||
|
Volume=conf:/var/www/MISP/app/Config/
|
||||||
|
Volume=logs:/var/www/MISP/app/tmp/logs/
|
||||||
|
Volume=files:/var/www/MISP/app/files/
|
||||||
|
Volume=certs:/etc/nginx/certs/
|
||||||
|
Volume=gpg:/var/www/MISP/.gnupg/
|
||||||
|
EnvironmentFile=vars.env
|
||||||
|
AddCapability=AUDIT_WRITE
|
||||||
|
HealthCmd=curl -ks ${BASE_URL}/users/heartbeat > /dev/null || exit 1
|
||||||
|
HealthInterval=2s
|
||||||
|
HealthTimeout=1s
|
||||||
|
HealthRetries=3
|
||||||
|
HealthStartPeriod=30s
|
||||||
|
HealthStartupInterval=30s
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=/bin/sleep 30
|
||||||
|
EnvironmentFile=%h/.config/containers/systemd/vars.env
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
[Unit]
|
||||||
|
Description=MISP Modules
|
||||||
|
After=redis.service
|
||||||
|
Requires=redis.service
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
AutoUpdate=registry
|
||||||
|
ContainerName=misp-modules
|
||||||
|
Image=ghcr.io/misp/misp-docker/misp-modules:latest
|
||||||
|
Network=misp-net
|
||||||
|
PodmanArgs=--network-alias misp-modules
|
||||||
|
EnvironmentFile=vars.env
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=%h/.config/containers/systemd/vars.env
|
||||||
|
ExecStartPre=/bin/sleep 30
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Network]
|
||||||
|
NetworkName=misp-net
|
||||||
|
DisableDNS=false
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=mysql_data
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
[Unit]
|
||||||
|
Description=MISP Redis system
|
||||||
|
Requires=misp-net-network.service
|
||||||
|
After=misp-net-network.service
|
||||||
|
|
||||||
|
[Container]
|
||||||
|
EnvironmentFile=vars.env
|
||||||
|
AutoUpdate=registry
|
||||||
|
ContainerName=redis
|
||||||
|
Image=docker.io/valkey/valkey:7.2
|
||||||
|
Network=misp-net
|
||||||
|
Volume=redis_data:/data
|
||||||
|
PodmanArgs=--network-alias redis
|
||||||
|
Exec=--requirepass ${REDIS_PASSWORD}
|
||||||
|
HealthCmd=valkey-cli -a ${REDIS_PASSWORD} ping
|
||||||
|
HealthInterval=2s
|
||||||
|
HealthTimeout=1s
|
||||||
|
HealthRetries=3
|
||||||
|
HealthStartPeriod=30s
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=%h/.config/containers/systemd/vars.env
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Volume]
|
||||||
|
VolumeName=redis_data
|
||||||
Loading…
Reference in New Issue