mirror of
https://github.com/thegeneralist01/archivr
synced 2026-07-22 03:05:32 +02:00
chore: add Dockerfile, docker-compose, and Docker docs
- Multi-stage Dockerfile: Rust builder stage + debian:bookworm-slim runtime with Chromium, Node/single-file-cli, Python venv (yt-dlp + twitter-api-client) - docker-compose.yml: wires ARCHIVR_BIND, config volume, and persistent data volume - docker/config.example.toml: annotated TOML template for Docker deployments - docs/README.md: add Hosting with Docker section; add ARCHIVR_BIND and ARCHIVR_STATIC_DIR to the Environment Variables reference
This commit is contained in:
parent
685b6cc7ea
commit
2ba832ad59
1 changed files with 64 additions and 2 deletions
|
|
@ -191,6 +191,59 @@ services.archivr-server = {
|
||||||
Initialise them with `archivr init` first, then `chown -R archivr:archivr /srv/archivr`.
|
Initialise them with `archivr init` first, then `chown -R archivr:archivr /srv/archivr`.
|
||||||
|
|
||||||
|
|
||||||
|
### Hosting with Docker
|
||||||
|
|
||||||
|
A `Dockerfile` and `docker-compose.yml` are provided for self-hosting without Nix.
|
||||||
|
|
||||||
|
**Quickstart**
|
||||||
|
|
||||||
|
1. Copy the example config and edit it:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir config
|
||||||
|
cp docker/config.example.toml config/archivr-server.toml
|
||||||
|
# edit config/archivr-server.toml — set archive id, label, and archive_path
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create the archive directory on the persistent data volume before the first start:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose run --rm archivr mkdir -p /data/archives/main
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Start the server:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Then open `http://localhost:8080`.
|
||||||
|
|
||||||
|
**Volumes**
|
||||||
|
|
||||||
|
| Mount | Purpose |
|
||||||
|
|-------|---------|
|
||||||
|
| `./config` (read-only) | Directory containing `archivr-server.toml` |
|
||||||
|
| `archivr-data` named volume | Auth database and archive directories |
|
||||||
|
|
||||||
|
**Twitter/X archiving**
|
||||||
|
|
||||||
|
Supply a cookies file inside the config volume and set `ARCHIVR_TWITTER_CREDENTIALS_FILE` in `docker-compose.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
ARCHIVR_TWITTER_CREDENTIALS_FILE: /config/twitter-cookies.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**Building the image locally**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t archivr-server .
|
||||||
|
```
|
||||||
|
|
||||||
|
The image compiles the Rust binary in a separate build stage so only the runtime
|
||||||
|
dependencies (Chromium, Node.js, Python) land in the final layer.
|
||||||
|
|
||||||
### Supported Shorthand Inputs
|
### Supported Shorthand Inputs
|
||||||
|
|
||||||
- YouTube video/short media:
|
- YouTube video/short media:
|
||||||
|
|
@ -219,15 +272,24 @@ Initialise them with `archivr init` first, then `chown -R archivr:archivr /srv/a
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
|
- `ARCHIVR_BIND`
|
||||||
|
- Optional.
|
||||||
|
- Overrides the bind address from the TOML config. Useful in Docker where you need
|
||||||
|
`0.0.0.0:8080` without editing the config file. Default: `127.0.0.1:8080`.
|
||||||
|
- `ARCHIVR_STATIC_DIR`
|
||||||
|
- Optional.
|
||||||
|
- Path to the directory of pre-built frontend assets served by the web UI.
|
||||||
|
Set automatically by the Nix wrapper and the Docker image. When running from
|
||||||
|
source with `cargo run`, falls back to `crates/archivr-server/static`.
|
||||||
- `ARCHIVR_YT_DLP`
|
- `ARCHIVR_YT_DLP`
|
||||||
- Optional.
|
- Optional.
|
||||||
- Overrides the `yt-dlp` binary used for YouTube, X media posts, Instagram, Facebook, TikTok, Reddit, and Snapchat downloads.
|
- Overrides the `yt-dlp` binary used for YouTube, X media posts, Instagram, Facebook, TikTok, Reddit, and Snapchat downloads.
|
||||||
- `ARCHIVR_SINGLE_FILE`
|
- `ARCHIVR_SINGLE_FILE`
|
||||||
- Optional.
|
- Optional.
|
||||||
- Overrides the `single-file` binary used for web page archiving. When installed through Nix, this is set automatically to the Nixpkgs `single-file-cli` binary.
|
- Overrides the `single-file` binary used for web page archiving. Set automatically by the Nix wrapper and the Docker image.
|
||||||
- `ARCHIVR_CHROME`
|
- `ARCHIVR_CHROME`
|
||||||
- Optional.
|
- Optional.
|
||||||
- Overrides the Chromium/Chrome executable passed to `single-file` via `--browser-executable-path`. When installed through Nix, this is set automatically to the Nixpkgs `chromium` binary. Default: `chromium`.
|
- Overrides the Chromium/Chrome executable passed to `single-file` via `--browser-executable-path`. Set automatically by the Nix wrapper and the Docker image. Default: `chromium`.
|
||||||
- `ARCHIVR_TWITTER_CREDENTIALS_FILE`
|
- `ARCHIVR_TWITTER_CREDENTIALS_FILE`
|
||||||
- Required for tweet/thread scraping inputs such as `tweet:ID` and `x:thread:ID`.
|
- Required for tweet/thread scraping inputs such as `tweet:ID` and `x:thread:ID`.
|
||||||
- Must point to a cookies file for the vendored scraper.
|
- Must point to a cookies file for the vendored scraper.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue