photo26/README.md
krek0 9994403925
All checks were successful
Docker / build (push) Successful in 10s
Indicate docker config in readme and auto create admin user in docker
2026-05-03 16:29:45 +02:00

141 lines
3.7 KiB
Markdown

# Photo server 2021-2023
This project is a fork of [Photo21](https://gitlab.crans.org/bde/photo21/) developped at ENS Paris-Saclay.
[![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 Paris-Saclay student life.
The philosophy of this project is to keep this code as simple as possible to
run and to maintain.
## Setup
1. **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
```
2. **Cloning.**
Change directory to where you want the project to be.
In production, we usually use `/var/www/photos/` as the `root` user.
```bash
git clone https://codeberg.org/krek0/photo21.git && cd photo21
```
3. **Configuration (production only).**
```bash
sudo mkdir static media
sudo chmod +x maintenance_tool.sh
```
4. **Database (production only).**
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 'un_mot_de_passe_sur';
postgres=# CREATE DATABASE photo21 OWNER photo21;
```
5. **Initialization.**,
In production, please use `www-data` user.
```
./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
# change DEBUG to True in photo21/settings.py
```
6. **Maintenance Mode.**,
In production to toggle the server mainteance mode
```./maintenance_tool.sh```
## Docker install
1. Create a `docker-compose.yml`:
```yaml
version: "3.9"
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
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:
- ./static:/app/static
- ./media:/app/media
ports:
- "8080:8000"
```
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
---
6. *Enjoy \o/*
In development, you can launch the development server using:
```bash
(env)$ ./manage.py runserver
```