photo26/README.md
2026-05-03 18:29:54 +02:00

140 lines
3.6 KiB
Markdown

# Photo server
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.txt)
This is the source code for the webserver hosting pictures from the
ENS Rennes student life.
The philosophy of this project is to keep this code as simple as possible to
run and to maintain.
This project is a fork of [Photo21](https://gitlab.crans.org/bde/photo21/),
originally developed at ENS Paris-Saclay.
## Docker install (recommended for production)
1. Create a `docker-compose.yml` (a ready-to-use file is provided in the repository):
```yaml
version: "3.9"
networks:
photo26:
services:
db:
image: postgres:16
container_name: photo26-db
restart: unless-stopped
environment:
POSTGRES_DB: photo26
POSTGRES_USER: photo26
POSTGRES_PASSWORD: change-me
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
- photo26
photo26:
image: git.sinfonie.org/sinfonie/photo26:latest
container_name: photo26-app
restart: unless-stopped
depends_on:
- db
environment:
DB_ENGINE: postgres
DB_NAME: photo26
DB_USER: photo26
DB_PASSWORD: change-me
DB_HOST: db
DB_PORT: 5432
SECRET_KEY: change-me
EXTRA_HOSTS: photos.example.org
volumes:
- ./media:/app/media
ports:
- "8080:8000"
networks:
- photo26
```
2. Start the stack:
```bash
docker compose up -d
```
On first start the container will run migrations and create a default admin account automatically.
3. **Default credentials** — change these immediately after first login:
| Field | Value |
|----------|-----------------|
| Username | `admin` |
| Password | `admin` |
| Email | `admin@localhost` |
Admin panel: `http://localhost:8080/admin/`
4. **Passwords to change** in `docker-compose.yml` before going to production:
- `POSTGRES_PASSWORD` / `DB_PASSWORD` — database password
- `SECRET_KEY` — Django secret key (use a long random string)
- Log in to the admin panel and change the `admin` user password
## Development setup
1. **Cloning.**
Change directory to where you want the project to be.
```bash
git clone https://codeberg.org/krek0/photo21.git && cd photo21
```
2. **Dependency installation.**
If you are not using Debian, please feel free to adapt the following instructions.
```bash
sudo apt install git gettext python3-django python3-django-allauth python3-django-crispy-forms python3-docutils python3-exifread python3-pil
```
3. **Configuration.**
```bash
sudo mkdir static media
sudo chmod +x maintenance_tool.sh
```
4. **Database.**
In development, you may use SQLite (no setup).
In production, we use PostgreSQL which require a bit of setup:
```bash
sudo apt install postgresql postgresql-contrib
sudo -u postgres psql
postgres=# CREATE USER photo21 WITH PASSWORD 'your_password';
postgres=# CREATE DATABASE photo21 OWNER photo21;
```
5. **Initialization.**
```
./manage.py collectstatic
./manage.py check
./manage.py migrate
./manage.py compilemessages
# Only when creating a new database
./manage.py loaddata initial
./manage.py createsuperuser
```
6. **Maintenance Mode.**
In production to toggle the server maintenance mode
```./maintenance_tool.sh```
7. *Enjoy \o/*
```bash
(env)$ ./manage.py runserver
```