Configuration File
Easy Configuration
It is recommended to modify the configuration through the graphical interface in the sidebar "Dashboard" without manually editing the configuration file.
Environment Variables
You can configure via environment variables, refer to the documentation: Environment Variables.
Specifying the Configuration File Path
By default, Artalk uses artalk.yml
in the working directory as the configuration file. You can specify a specific file using the -c
parameter:
artalk -c ./conf.yml
Obtaining a Template Configuration File
You can refer to a "complete configuration file": artalk.example.zh-CN.yml
Generate Configuration File Using the gen
Command
Artalk provides the gen
command, allowing you to quickly generate a new configuration file:
artalk gen conf -lang zh-CN ./artalk.yml
Download Configuration File via Command Line
wget -O artalk.yml https://raw.githubusercontent.com/ArtalkJS/Artalk/master/conf/artalk.example.zh-CN.yml
Encryption Key app_key
Before starting Artalk, you need to configure an app_key
for securely encrypting site content:
app_key: <any random characters>
Language locale
Set the language for Artalk. Follows the Unicode BCP 47 standard, with the default being "zh-CN" (Simplified Chinese).
locale: zh-CN
For details, refer to: Multilingual
Database db
Artalk supports connecting to various databases, including SQLite, MySQL, PostgreSQL, and SQL Server. The configurations are as follows:
SQLite
SQLite is a lightweight database that stores data in a single file, requiring no additional running programs. It is especially suitable for small sites, such as personal blogs.
db:
type: sqlite
file: ./data/artalk.db
MySQL / PostgreSQL / SQL Server
Modify type
to your database type:
db:
type: mysql # sqlite, mysql, pgsql, mssql
name: artalk # Database name
host: localhost # Address
port: 3306 # Port
user: root # Username
password: '' # Password
charset: utf8mb4 # Charset
table_prefix: '' # Table prefix (e.g., "atk_")
ssl: false # Enable SSL
prepare_stmt: true # Prepared statements
The data tables will be automatically created when Artalk starts, no additional operation is required.
Database Connection String (DSN)
If needed, you can manually configure db.dsn
to specify the database connection string, for example:
db:
type: mysql
dsn: mysql://myuser:mypassword@localhost:3306/mydatabase?tls=skip-verify
For more details, refer to: @go-sql-driver/mysql:README.md
Server http
http:
# Request body size limit (unit: MB)
body_limit: 100
# Proxy header name (when using CDN, fill in `X-Forwarded-For` to get the user's real IP)
proxy_header: ""
Admin Users admin_users
You need to configure administrator accounts to manage site content through the "Dashboard".
Artalk supports multiple sites, allowing you to create multiple administrator accounts and assign sites to them, enabling your friends to share the same backend program.
For details, refer to: Admin Users × Multi-site
Trusted Domains trusted_domains
trusted_domains:
- https://frontend.domainA.com
- https://frontend.domainB.com
Only the domains in the list are allowed to access the backend API, restricting cross-domain requests from external domains.
TIP
You need to add the URL address of the "frontend page" to the trusted domains list.
If it's not the default 80/443 port, include the port number, e.g., https://example.com:8080
.
In the sidebar Dashboard, under the "Site" tab - select the site and "Modify URL", fill in the site URL to achieve the same setting effect; to add multiple URLs, separate them with commas ,
. After modification, manually restart Artalk.
The default site address ATK_SITE_URL
configuration item will also be automatically added to the trusted domains list.
Additionally, you can configure trusted domains via the environment variable ATK_TRUSTED_DOMAINS
when starting, for example:
ATK_TRUSTED_DOMAINS="https://a.com https://b.org" artalk server
Note that environment variables will override the settings in the configuration file.
Technical details: trusted_domains
configuration controls cross-origin requests by setting the HTTP response header Access-Control-Allow-Origin
(refer to: W3C Cross-Origin Resource Sharing / OWASP Security Cheat Sheet).
Default Site site_default
If you think you won't use the multi-site feature of Artalk, you can directly set this item to your site name, for example:
site_default: Artalk Official Website
Then use this site name in the frontend:
Artalk.init({ site: 'Artalk Official Website' })
This way, you don't need to manually create the site in the sidebar Dashboard.
Frontend Configuration frontend
In Artalk's configuration file artalk.yml
, you can configure the frontend
field to control the frontend interface, for example:
frontend:
placeholder: Type content...
noComment: "Silence is golden"
sendBtn: Send Comment
emoticons: 'https://raw.githubusercontent.com/ArtalkJS/Emoticons/master/grps/default.json'
# ----- Omitted -------
# Keep the same as the frontend configuration item name
A complete backend frontend
field configuration file can be referred to: artalk.example.zh-CN.yml
Email Notifications email
Configure email notifications to notify the target user of replies via email. You can customize the sender name, title, template, etc.
For details, refer to: Backend · Email Notifications
Multi-channel Notifications admin_notify
You can configure various message sending methods, such as Feishu, Telegram, etc., to notify administrators when new comments are received.
For details, refer to: Backend · Multi-channel Notifications
Comment Moderation moderator
Configure comment moderation to automatically intercept spam comments.
For details, refer to: Backend · Comment Moderation
Captcha captcha
Supports image and slide captchas to limit request frequency.
For details, refer to: Backend · Captcha
Cache cache
To save memory resources, caching is disabled by default. If you have high performance requirements for your site, enable it manually. You can also connect to external cache servers, supporting Redis and Memcache.
cache:
enabled: true # Enable cache (default is off)
type: builtin # Supports redis, memcache, builtin (built-in cache)
expires: 30 # Cache expiration time (unit: minutes)
warm_up: false # Warm up cache on program startup
server: '' # Connect to cache server (e.g., "localhost:6379")
- warm_up: Cache warm-up feature. Set to
true
, it will immediately cache all database content when Artalk starts. If you have a large number of comments, this may extend the startup time. - type: Cache type, defaults to
builtin
. Options:redis
,memcache
,builtin
.
Note: If you modify the database content outside the Artalk program, you need to refresh the Artalk cache to update it.
Redis authentication and database configuration:
# Cache
cache:
# Omit other configurations...
redis:
network: tcp # Connection method (tcp or unix)
username: '' # Username
password: '' # Password
db: 0 # Use database 0
Listening Address host
The default HTTP port for Artalk is 23366. You can specify it in the configuration file:
host: '0.0.0.0'
port: 23366
Configuring the host
listening address to 0.0.0.0
will expose the Artalk service to the entire network.
If you want Artalk to be accessible only locally, configure host
to 127.0.0.1
.
When starting Artalk via the command line, you can specify the address and port using the --host
and --port
parameters, for example:
artalk server --host 127.0.0.1 --port 8080
Encrypted Transmission ssl
ssl:
enabled: true
cert_path: ''
key_path: ''
You can configure this item to upgrade HTTP to HTTPS, encrypting data transmission via SSL.
cert_path
: Path to the SSL certificate public key file.key_path
: Path to the SSL certificate private key file.
You can also directly reverse proxy the Artalk local server and then enable HTTPS in, for example, Nginx.
Time Zone Configuration timezone
timezone: Asia/Shanghai
Fill in the time zone where you are located, corresponding to the IANA database time zone name, refer to: Wikipedia / RFC-6557.
UTC+08:00 Asia/Shanghai
UTC+09:00 Asia/Tokyo
UTC-07:00 America/Los_Angeles
UTC-04:00 America/New_York
Login Timeout login_timeout
This value sets the validity period of the administrator account login JWT token, in seconds.
For example, valid for 3 days:
login_timeout: 259200
Log Configuration log
When logging is enabled, system errors and other information will be recorded in the specified file.
log:
enabled: true # Master switch
filename: ./data/artalk.log # Log file path
Logs are in JSON format, which can be viewed using the tail
command combined with the jq
tool in Linux:
tail -f ./data/artalk.log | jq
If you are a Grafana user, you can use Loki and Promtail to collect and query logs.
Debug Mode debug
Set debug
to true
to enable debug mode.
debug: true
Working Directory -w
Parameter
If the working directory is not specified, Artalk will use the "directory where the program is started" as the working directory.
pwd # Display the current directory path
Use the -w
parameter to specify the working directory, which is usually an "absolute path", for example:
artalk -w /root/artalk -c ./conf.yml
Note: The relative path of -c
will be based on the path of -w
, and Artalk will read /root/artalk/conf.yml
as the configuration file.
Additionally, the "relative path" used in the "configuration file" will also be based on the "working directory".
For example, if the configuration in conf.yml
is:
test_file: ./data/artalk.log
It will read /root/artalk/data/artalk.log
.