Getting Started
Gruxi can be installed on various platforms, and the method you choose depends on your environment and preferences.
In terms of performance, prebuilt binaries will typically perform better than Docker-based installs. Docker adds an extra abstraction layer (networking/filesystem), which can have a measurable impact. That trade-off may be perfectly acceptable for your use case.
Using prebuilt binaries
- Download a release - Download the release appropriate for your platform from GitHub Releases.
- Extract and run - The release is ready to use. Extract it and start the server.
- Verify - Open
http://localhostto see the default Gruxi page. - Configure - Open
https://localhost:8000and log in with the useradminand the password printed to the server output on first run. Save it, as it will not be shown again.
Docker
Gruxi uses a slim Alpine-based image and runs as a non-root user for security. You can use ghcr.io/daevtech/gruxi:latest for the latest release. To pin a specific version, use a version tag such as ghcr.io/daevtech/gruxi:0.1.7.
Docker without persistence
- Install Docker - Make sure Docker is installed on your system.
- Run Gruxi in Docker
docker run --name gruxi1 -p 80:80 -p 443:443 -p 8000:8000 -d ghcr.io/daevtech/gruxi:latest- Verify - Open
http://localhostto see the default Gruxi page. - Configure - Open
https://localhost:8000and log in with the useradminand the password printed to the server output on first run. Save it, as it will not be shown again.
Docker with persistence
- Install Docker - Make sure Docker is installed on your system.
- Run Gruxi in Docker
docker run --name gruxi1 -p 80:80 -p 443:443 -p 8000:8000 \
-v ./my-web-content:/app/www-default:ro \
-v ./logs:/app/logs \
-v ./certs:/app/certs \
-v ./db:/app/db \
-d ghcr.io/daevtech/gruxi:latest- Verify - Open
http://localhostto see your content from./my-web-content. - Configure - Open
https://localhost:8000and log in with the useradminand the password printed to the server output on first run. Save it, as it will not be shown again.
Docker Compose
When running infrastructure in Docker with more than one container, you will usually want Docker Compose. The distinction is primarily about orchestration, repeatability, and operational clarity.
- Download docker-compose.yml
Download the docker-compose.yml from the Gruxi GitHub repository root and adjust it for your needs.
- Run with Docker Compose
docker compose up -dRun this in the same directory as the docker-compose.yml file.
- Example docker-compose.yml
services:
gruxi:
image: ghcr.io/daevtech/gruxi:latest
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8000:8000" # Admin/API port
volumes:
# Mount project directories for development
- ./db:/app/db
- ./logs:/app/logs
- ./certs:/app/certs
# - ./www-default:/app/www-default
restart: unless-stopped
depends_on:
- php-fpm
networks:
- gruxi-network
# PHP-FPM service for handling PHP requests
php-fpm:
image: php:8.2-fpm-alpine
# volumes:
# - ./www-default:/var/www/html:ro# Web content accessible to PHP-FPM
ports:
- "9000:9000"
restart: unless-stopped
networks:
- gruxi-network
networks:
gruxi-network:
driver: bridgeThis provides persistent storage for the database, logs, and certificates.
To serve your own content, mount a volume to /app/www-default in the Gruxi container (and in the PHP container if you are serving PHP content), as shown in the example.
For development
- Install dependencies
Install the Rust toolchain from https://rust-lang.org/tools/install/
- Clone the repository
git clone https://github.com/DaevTech/Gruxi.gitThis will create a local copy of the Gruxi repository.
- Build and run
cargo run -- -o DEVThis runs Gruxi in dev mode with trace logging enabled.
- Build the admin portal
If you also want to build the admin portal:
cd www-admin-src
npm install
npm run buildGruxi is now available at http://localhost, and the admin portal is available at https://localhost:8000.
Next step
You now have a working Gruxi instance running on your system or server. Next, learn how configuration works.