Installation
This guide covers installing Kitsu for both production use and development. Choose the installation method that best fits your needs.Docker installation (recommended)
Docker provides the simplest way to run Kitsu with all dependencies pre-configured.Prerequisites
- Docker >= 1.13
- Port 80 available on your host machine (or configure a different port)
Basic setup
Run the CGWire Docker image:http://localhost after the container starts (approximately 30 seconds).
Custom port configuration
If port 80 is already in use, map to a different port:http://localhost:8080.
Persistent data
By default, data is stored inside the container. For production use, mount volumes to persist data:Development environment
Set up a local development environment to contribute to Kitsu or customize it for your studio.Prerequisites
Ensure you have the following installed:- Node.js: >= 20.19 (Download)
- npm: >= 10 (comes with Node.js)
- Docker: >= 1.13 (for the API backend)
- Git: For cloning the repository
The specific version requirements come from the
engines field in package.json:1:95. Using older versions may cause compatibility issues.Installation steps
Start the API backend
Run the CGWire Docker container to provide the API and database:This provides the Zou API that Kitsu connects to.
Configure environment variables
Set up the API connection. The development server needs to know where to find the backend:
Install dependencies
Install all required npm packages:This installs Vue.js, Vuex, Vite, and all other dependencies listed in package.json.
Development server configuration
The Vite development server is configured invite.config.js with:
- Host: 127.0.0.1
- Port: 8080
- API proxy: Forwards
/apirequests to the backend - WebSocket proxy: Forwards
/socket.iofor real-time updates
Available scripts
The package.json defines several useful development commands:Environment variables
Kitsu uses environment variables for configuration:| Variable | Description | Default |
|---|---|---|
KITSU_API_TARGET | Backend API endpoint URL | http://127.0.0.1:5000 |
KITSU_EVENT_TARGET | WebSocket server URL for real-time events | http://127.0.0.1:5001 |
These variables are only used during development. In production, the Kitsu frontend and Zou API are typically served from the same domain.
Architecture overview
Kitsu follows a modern frontend architecture:- Vue Router: Manages URL routes and navigation
- Vuex stores: Centralized state management with mutations and actions
- Components: Reusable UI elements with HTML, CSS, and JavaScript
- WebSocket: Real-time updates via Socket.io
- API client: Superagent for HTTP requests to the Zou backend
- URL routes provide the main application context
- Shared state is stored in Vuex stores
- Mutations modify state synchronously
- Actions handle asynchronous operations (API calls, etc.)
- Components access state through getters
- Local UI state is managed within components
Troubleshooting
Port already in use
Problem: Port 8080 is already occupied. Solution: Editvite.config.js and change the port number:
Cannot connect to API
Problem: Frontend cannot reach the backend API. Solution: Verify the Docker container is running and check the environment variables:JavaScript required error
Problem: Browser shows “JavaScript required” message. Solution: Ensure JavaScript is enabled in your browser. Kitsu is a single-page application that requires JavaScript to function.Node version mismatch
Problem: npm install fails due to Node.js version. Solution: Upgrade to Node.js >= 20.19:Build errors after git pull
Problem: Development server fails after updating code. Solution: Clean install dependencies:Production deployment
For production environments:- Use persistent volumes for database and file storage
- Configure backups for your PostgreSQL database
- Set up SSL/TLS using a reverse proxy (nginx, Caddy, etc.)
- Change default passwords for all accounts
- Configure email for notifications and password resets
- Monitor logs for errors and performance issues
Next steps
Contributing guide
Learn how to contribute code to Kitsu
API documentation
Explore the Zou API for integrations
Community Discord
Get help from the Kitsu community
Feature requests
Suggest new features on Canny
