- HTML 98.1%
- Shell 1.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| .editorconfig | ||
| .gitignore | ||
| header_bg.jpg | ||
| index.html | ||
| LICENSE | ||
| notification-list.json | ||
| README.md | ||
| run.sh | ||
AlmaLinux Mirror Propagation Report
This service provides information about the status of the AlmaLinux mirrors. The report shows the time it takes for updates to propagate to the mirrors, as well as the number of mirrors that have been updated. This information can be used to identify mirrors that are not up to date, and to troubleshoot any problems with the mirror propagation process.
Wanna be notified when a your server is outdated?
Open an PR to add your server to the notification-list.json file. This will
allow you to receive notifications when your server is outdated for more than 30
minutes.
Podman as Docker (rootless) — AlmaLinux 9 / Raspberry Pi
How to keep the Podman socket running permanently for applications that expect to talk to the Docker daemon.
TL;DR
sudo loginctl enable-linger $(whoami)
systemctl --user enable --now podman.socket
echo 'export DOCKER_HOST=unix:///run/user/'$(id -u)'/podman/podman.sock' >> ~/.bashrc
source ~/.bashrc
The problem
The application fails with:
failed to query docker info: Cannot connect to the Docker daemon at
unix:///run/user/1001/podman/podman.sock. Is the docker daemon running?
Running sudo systemctl start podman makes it work, but the socket dies as soon as the SSH terminal is closed.
The causes
Three independent problems overlap here:
1. Wrong socket
sudo systemctl start podman starts the root socket, at /run/podman/podman.sock.
The application uses the rootless socket for UID 1001, at /run/user/1001/podman/podman.sock.
These are different sockets, belonging to different Podman instances, with separate images and containers. Starting one has no effect on the other.
2. User session terminated
systemd --user services are stopped when the user's last session ends. Closing the SSH connection kills systemd --user and takes the socket with it — the /run/user/1001 directory itself stops existing.
loginctl enable-linger keeps the user's systemd instance running for as long as the machine is powered on, even with no active login.
3. .service vs .socket
| Unit | Behavior |
|---|---|
podman.service |
Has an idle timeout and stops on its own |
podman.socket |
Activated on demand, never expires |
For permanent use, always use podman.socket.
Setup
Run these as the user that runs the application (not with sudo su).
1. Confirm the UID
id -u
This should print 1001 — the same number that appears in the error path. If it prints anything else, you are on the wrong user.
2. Enable linger
sudo loginctl enable-linger $(whoami)
3. Enable and start the socket
systemctl --user enable --now podman.socket
4. Set DOCKER_HOST
echo 'export DOCKER_HOST=unix:///run/user/'$(id -u)'/podman/podman.sock' >> ~/.bashrc
source ~/.bashrc
5. Verify
Close the SSH session, reconnect, then run:
systemctl --user status podman.socket
podman info | head -3
The status should show Active: active (listening).
Troubleshooting
Failed to connect to bus: No medium found
The shell has no XDG_RUNTIME_DIR set. This happens when you reached the shell through su - user or sudo -i -u user instead of a direct SSH login.
Temporary fix, for the current shell only:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
Permanent fix: exit everything and connect directly with ssh user@host. Then confirm:
echo $XDG_RUNTIME_DIR # should print /run/user/1001
If this comes back empty even over a direct SSH login, enable-linger was not applied — the /run/user/1001 directory only exists after it.
Application runs as a systemd service
Services do not read .bashrc. Add the variable to the unit file itself:
[Service]
Environment=DOCKER_HOST=unix:///run/user/1001/podman/podman.sock
Then:
sudo systemctl daemon-reload
sudo systemctl restart service-name
Containers/images disappeared
You most likely switched between root and rootless Podman. Check which socket is in use:
echo $DOCKER_HOST
To list what exists in each instance:
podman ps -a # rootless (current user)
sudo podman ps -a # root
Command reference
| Action | Command |
|---|---|
| Socket status | systemctl --user status podman.socket |
| Restart socket | systemctl --user restart podman.socket |
| Logs | journalctl --user -u podman.socket -n 50 |
| Check linger | loginctl show-user $(whoami) | grep Linger |
| Test connection | podman info |
Notes
- Rootless Podman cannot bind ports below 1024 by default. To allow it:
To make this persist, add it tosudo sysctl -w net.ipv4.ip_unprivileged_port_start=80/etc/sysctl.d/99-podman.conf. - The
podman-dockerpackage creates adocker→podmanalias, useful for scripts that calldockerdirectly.