Configuration
ZobTube configuration is pretty straightforward. It can either be passed through environmental variables, command line parameters or through a configuration file.
Reference
| Name | CLI parameter | Environmental parameter | YAML key | Default |
|---|---|---|---|---|
| Configuration file | --config-file |
$ZT_CONFIG_FILE |
— | config.yml |
| Gin debug mode | --gin-debug |
$ZT_GIN_DEBUG |
log.gin.debug |
false |
| Log level | --log-level |
$ZT_LOG_LEVEL |
log.level |
1 (info) |
| Server bind address | --server-bind |
$ZT_SERVER_BIND |
server.bind |
0.0.0.0:8069 |
| Database driver | --db-driver |
$ZT_DB_DRIVER |
db.driver |
sqlite |
| Database connection string | --db-connstring |
$ZT_DB_CONNSTRING |
db.connstring |
zobtube.sqlite |
| Media path | --media-path |
$ZT_MEDIA_PATH |
media.path |
data |
| Metadata storage type | --metadata-type |
$ZT_METADATA_TYPE |
metadata.type |
filesystem |
| Metadata path (filesystem) | --metadata-path |
$ZT_METADATA_PATH |
metadata.path |
same as media-path |
| Metadata S3 bucket | --metadata-s3-bucket |
$ZT_METADATA_S3_BUCKET |
metadata.s3.bucket |
— |
| Metadata S3 region | --metadata-s3-region |
$ZT_METADATA_S3_REGION |
metadata.s3.region |
us-east-1 |
| Metadata S3 prefix | --metadata-s3-prefix |
$ZT_METADATA_S3_PREFIX |
metadata.s3.prefix |
— |
| Metadata S3 endpoint | --metadata-s3-endpoint |
$ZT_METADATA_S3_ENDPOINT |
metadata.s3.endpoint |
— |
| Metadata S3 access key ID | --metadata-s3-access-key-id |
$ZT_METADATA_S3_ACCESS_KEY_ID |
metadata.s3.access_key_id |
— |
| Metadata S3 secret access key | --metadata-s3-secret-access-key |
$ZT_METADATA_S3_SECRET_ACCESS_KEY |
metadata.s3.secret_access_key |
— |
Log level values: 5 panic, 4 fatal, 3 error, 2 warn, 1 info, 0 debug, -1 trace.
db-driver must be sqlite or postgresql. metadata-type must be filesystem or s3; when using S3, metadata-s3-bucket is required.
Example with CLI parameters and local SQLite database
./zobtube server \
--server-bind 127.0.0.1:8069 \
--log-level 1 \
--db-driver sqlite \
--db-connstring ./zobtube.sqlite \
--media-path ./data \
--metadata-type filesystem \
--metadata-path ./metadata
Only non-default values are required; the same setup with defaults omitted:
./zobtube server \
--db-connstring ./zobtube.sqlite \
--media-path ./data
Equivalent config.yml (use --config-file or place it as config.yml in the working directory):
server:
bind: "127.0.0.1:8069"
log:
level: 1
db:
driver: sqlite
connstring: ./zobtube.sqlite
media:
path: ./data
metadata:
type: filesystem
path: ./metadata
Example with environmental variables and PostgreSQL database
export ZT_SERVER_BIND="0.0.0.0:8069"
export ZT_LOG_LEVEL=1
export ZT_DB_DRIVER=postgresql
export ZT_DB_CONNSTRING="host=localhost user=zobtube password=secret dbname=zobtube port=5432 sslmode=disable"
export ZT_MEDIA_PATH=/var/lib/zobtube/media
export ZT_METADATA_TYPE=filesystem
export ZT_METADATA_PATH=/var/lib/zobtube/metadata
./zobtube
Docker Compose fragment:
environment:
- ZT_SERVER_BIND=0.0.0.0:8069
- ZT_DB_DRIVER=postgresql
- ZT_DB_CONNSTRING=host=postgres user=zobtube password=secret dbname=zobtube port=5432 sslmode=disable
- ZT_MEDIA_PATH=/var/lib/zobtube/media
- ZT_METADATA_TYPE=filesystem
- ZT_METADATA_PATH=/var/lib/zobtube/metadata
Equivalent config.yml:
server:
bind: "0.0.0.0:8069"
log:
level: 1
db:
driver: postgresql
connstring: "host=postgres user=zobtube password=secret dbname=zobtube port=5432 sslmode=disable"
media:
path: /var/lib/zobtube/media
metadata:
type: filesystem
path: /var/lib/zobtube/metadata