Fine-tuning

Configuration primer

qianmoQqianmoQ· 更新于 2026-09-15· 阅读 11 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Configuration primer

Fine tune your instance exactly the way you want.

Gogs uses a layered configuration system. A default configuration is embedded in the binary, and you provide overrides in a custom file. Beyond app.ini, the custom/ directory lets you override templates, static assets, locale files, and more.

Two-layer configuration

Gogs reads configuration from two sources, in order:

  1. Embedded defaults: The conf/app.ini file is compiled into the binary. You should never edit this file directly.
  2. Custom overrides: Your custom/conf/app.ini file. Any value you set here takes precedence over the embedded default.

This separation means binary users can upgrade without losing their settings, and source installers benefit from custom/ being in .gitignore.

提示

The embedded conf/app.ini contains every available option with detailed inline comments. Use it as your canonical reference.

Overriding a value

You only need to include the values you want to change. For example, to set a custom repository storage path and switch to production mode:

RUN_MODE = prod

[repository]
ROOT = /home/git/gogs-repositories

Values support INI variable interpolation with the %(KEY)s syntax. The embedded defaults use this extensively, for example:

EXTERNAL_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/

Values also support environment variable expansion, so you can reference system environment variables directly in your configuration:

[database]
PASSWORD = ${DATABASE_PASSWORD}
警告

If a password or value contains special characters (like backticks or #), wrap it in backticks, e.g., PASSWORD = `p@ss#word!`.

提示

Gogs uses go-ini/ini as the configuration library, please refer to its documentation for the full syntax specification including multi-line values, key/value separators, and section handling.

The custom/ directory

The custom/ directory is Gogs' extension point. It sits alongside the binary by default, and contains much more than just app.ini.

Finding the path

Run gogs web --help to see the custom directory path in the output. You can also override it:

Method Example
Default The custom/ subdirectory next to the binary
Environment variable GOGS_CUSTOM=/etc/gogs

The work directory (parent of custom/) can also be overridden with GOGS_WORK_DIR.

Specifying a custom config path

Every Gogs subcommand accepts -c, --config to point to a configuration file at a non-default location:

gogs web --config /etc/gogs/app.ini

What lives in custom/

custom/
├── conf/
│   ├── app.ini              # Your configuration overrides
│   ├── auth.d/              # Authentication source files
│   │   └── *.conf
│   ├── gitignore/           # Custom .gitignore templates
│   ├── license/             # Custom license templates
│   ├── readme/              # Custom README templates
│   ├── label/               # Custom issue label sets
│   └── locale/              # Translation overrides
│       └── locale_*.ini
├── templates/               # HTML template overrides
├── public/                  # Static asset overrides (CSS, JS, images)
└── robots.txt               # Search engine crawling rules

All of these are optional. Gogs falls back to embedded defaults when a custom file does not exist.

Repository templates

Gogs ships with embedded templates used when creating new repositories:

Template type Embedded location
.gitignore conf/gitignore/
License conf/license/
README conf/readme/
Issue labels conf/label/

You can add your own by placing files in the corresponding custom/conf/ subdirectory. Custom files take priority over embedded ones with the same name, so you can also override built-in templates.

For example, to add a custom .gitignore template that appears in the repository creation form:

custom/conf/gitignore/MyFramework

The [repository] PREFERRED_LICENSES option controls which licenses appear at the top of the selection list. The names must match filenames in conf/license/ or custom/conf/license/.

Custom templates and static assets

You can override any of Gogs' HTML templates or static assets by mirroring the file structure under custom/.

Templates -- Place files in custom/templates/ matching the path of the embedded template you want to override. See Custom templates for details.

Static assets -- Place files in custom/public/ to override CSS, JavaScript, or images. Custom public files are served with higher priority than embedded ones.

Locale overrides -- Place locale_*.ini files in custom/conf/locale/ to override translation strings for any supported language.

Loading assets from disk

By default, Gogs serves templates, locale files, and public assets from the binary's embedded data. If you set LOAD_ASSETS_FROM_DISK = true in [server], Gogs will load them from the work directory instead. This is mainly useful during development.

评论

登录后参与评论

正在加载评论…