- What is a podman?
- Why should I use it?
- Why shouldn't I just git clone?
- Why not Docker?
- Podman is a container engine.
- Easy setup that doesn't gunk up your system, and allows for easy management of the process.
- Gunks up your system by needing to install node, can't manage the process as easily, logs are a bit more annoying, can fuck up with cryptic git or npm errors.
- I don't know how to. Also it doesn't work for immutable distros that don't come with docker.
First of all, I will assume you are using Ubuntu, but you can just substitute any commands with whatever your distro's package manager is.
- Update your system. You should already know how to (or so I hope), but I might as well spell it out. Not really a part of the guide, but it's a good idea. [NEEDS ROOT/SUDO, if using system package manager, such as apt]
apt install podman curl
mkdir ~/st # Can be something else or put elsewhere. Doesn't matter.
cd ~/st
curl -LO 'https://github.com/SillyTavern/SillyTavern/raw/refs/heads/release/docker/docker-compose.yml'
sed -i '/build/d' docker-compose.yml # Removes build line, podlet won't like it.
podman run --rm -v ./docker-compose.yml:/docker-compose.yml:Z ghcr.io/containers/podlet -a ~/st compose /docker-compose.yaml > sillytavern.container
cat <<EOF >> sillytavern.container #[OPTIONAL]
[Install] #[OPTIONAL]
WantedBy=default.target #[OPTIONAL]
EOF #[OPTIONAL]
loginctl enable-linger $USER #[OPTIONAL]
mkdir -p ~/.config/containers/systemd
cp sillytavern.container ~/.config/containers/systemd
systemctl --user daemon-reload # so systemd can see the .container
systemctl --user start sillytavern.service # Will pull the image, may take a while the first time you run it.
ss -tulpn | grep 8000 #check if it's actually listening. If so, good boy.
```
"SillyTavern made a new release! how do I update?"
It should update itself on boot but there's a good chance it'll time out before finishing. You can:
A. Raise the timeout (look it up), or
B. podman pull ghcr.io/sillytavern/sillyavern:latest (or staging, however it is you roll.)
"I don't want to be on stable! How do I get on staging?"
Edit the sillytavern.container file (the one in ~/.config/containers/systemd) and change sillytavern:latest to sillytavern:staging
"But br, you could have just made this a script!"
Correct! But I got too far and can't be bothered. Also not distro-agnostic, unless I took a great amount of effort.
"How do I see the status of the container or the logs?"
systemctl --user status sillytavern to see status and journalctl --user -u sillytavern for logs.
"I have port 8000 used by another service! How do I change it?"
Edit the .container file, specifically the line with PublishPort=8000:8000. The first port is the host's port,
and the second is the container's port. You only need to change the first one, unless you edited the ST config (config/config.yaml)
to listen on another port.
"I have more questions! Can I ask you?"
No. Sillytavern has great documentation. Read it.