• HTML 62.8%
  • Python 29.5%
  • CSS 5.7%
  • Shell 1.2%
  • JavaScript 0.7%
Find a file
2026-01-15 16:41:18 +03:00
locales/ru_RU/LC_MESSAGES fix paths in translation files comments 2025-09-27 20:38:20 +03:00
migrations add a comment owner db migration 2025-11-21 19:23:54 +03:00
static add inter font as an option in admin -> accessibility 2025-11-21 19:26:48 +03:00
templates allow instance owner to edit own comments after logging out and back in 2026-01-10 22:16:17 +03:00
.env.example docker: Actually take DB_* variables into account 2025-10-25 20:19:57 +02:00
.gitignore add temp dir to gitignore 2026-01-10 22:08:49 +03:00
app.py remove debug print 2026-01-10 22:24:32 +03:00
babel.cfg babel stuff again 2025-02-28 07:26:35 +03:00
Caddyfile 1.1.0-alpha 2024-09-07 23:22:26 +03:00
CHANGELOG.md add changelog for v2.6.1 2026-01-10 22:25:10 +03:00
config.example.json improve accent color contrast on default dark theme 2025-11-21 19:10:40 +03:00
constants.py update sentry dsn 2025-11-22 20:30:42 +03:00
docker-compose.yml Add 'plugins' folder to the 'catask-data' volume in docker compose 2025-11-28 15:17:15 +01:00
docker.md change updating instructions in docker setup to rebuild the image instead 2025-06-15 20:26:19 +03:00
Dockerfile docker: add gcc and musl-dev to the docker image 2025-10-25 20:31:02 +02:00
entrypoint.sh docker: Actually take DB_* variables into account 2025-10-25 20:19:57 +02:00
fedi.py merge masto.py and misskey.py into fedi.py 2026-01-10 22:08:15 +03:00
functions.py [import] only copy favicon/emoji dirs if they actually exist in the export 2026-01-15 16:41:18 +03:00
gunicorn.conf.py revamp gunicorn config file 2025-06-15 20:45:19 +03:00
install.sh [install.sh] check if directory exists before cloning repo 2025-08-07 15:25:25 +03:00
LICENSE fix outdated copyright notice in the license 2025-07-31 15:55:10 +03:00
messages.pot fix paths in translation files comments 2025-09-27 20:38:20 +03:00
README.md update prerequisites in README 2025-11-21 14:01:15 +03:00
requirements.txt add authlib to pip requirements 2025-09-14 19:59:43 +03:00
roadmap.md Merge remote-tracking branch 'origin/main' 2026-01-10 22:31:12 +03:00
schema.sql update comment schema to add a created_by_owner column 2025-11-21 19:25:54 +03:00
UPDATE.md add update guide for v2.6.0 2025-11-21 19:32:42 +03:00
utils.py add the plugin system 2025-06-15 21:23:59 +03:00
version.txt bump to v2.6.1 2026-01-10 22:25:02 +03:00
wordlist.txt version 0.1.0 2024-08-27 22:43:46 +03:00
yoyo.ini add yoyo config file 2025-06-15 20:40:17 +03:00

CatAsk icon CatAsk

Website - Documentation - Demo - Theme Store

a simple & easy to use Q&A software that makes answering questions easier

Latest release Repository stars Repository issues Repository last commit

Prerequisites

  • PostgreSQL
  • Python 3.10+ (3.12+ recommended)
  • Git
  • (preferrably) A UNIX-based operating system

Note

Right now, we cannot guarantee that CatAsk will work properly on Windows as none of the devs have tested running it there.

Install

Automatic (Linux-only)

Simply download & run the install script:

curl -fsSL https://catask.org/install.sh | bash

Manual

Clone this repository:

git clone https://codeberg.org/catask-org/catask

Note

If you want to use Docker, see docker.md for further install instructions

Go into the cloned repository, create a virtual environment and activate it:

Linux

python -m venv venv && . venv/bin/activate

Windows (PowerShell)

python -m venv venv; .\venv\Scripts\activate

After that, install required packages:

pip install -r requirements.txt

Then, create the database and the user for CatAsk:

CREATE USER '<DB_USER>' WITH PASSWORD "<DB_PASS>";
CREATE DATABASE "<DB_NAME>" OWNER '<DB_USER>';

Post-install

Configuration

First, rename .env.example to .env and config.example.json to config.json, then configure all the values below:

.env

DB_HOST - database host (usually 127.0.0.1)
DB_NAME - database name
DB_USER - database user
DB_PASS - database password
DB_PORT - database port (usually 5432)
ADMIN_PASSWORD - password to access admin panel
APP_SECRET - application secret, generate one with this command: python3 -c 'import secrets; print(secrets.token_hex())'


After you're done configuring CatAsk, initialize the database:

flask init-db

If that doesn't work (e.g. tables are missing), try importing schema.sql file into the created database manually

Usage

Start CatAsk with this command:

gunicorn -w 4 app:app

If you want CatAsk to be accessible on a specific host address, specify a --bind option to the command (e.g. --bind 127.0.0.1:5000)
For debugging, run flask run --debug

Runs on 127.0.0.1:8000 by default

Caddy

This repository contains an example Caddyfile that runs CatAsk on catask.localhost by reverse proxying it to 127.0.0.1:5000, you can modify it as needed

Updating

For instructions with updating from one version to another, check the UPDATE.md file
Check the CHANGELOG.md file for release notes