| .forgejo/workflows | ||
| allauth_oauth | ||
| docs | ||
| photo21 | ||
| photologue | ||
| Scripts | ||
| .env.example | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| Cold_Backup.md | ||
| COPYING | ||
| Dockerfile | ||
| entrypoint.sh | ||
| maintenance_tool.sh | ||
| manage.py | ||
| README.md | ||
| requirements.txt | ||
| tox.ini | ||
Photo server 2021-2023
This project is a fork of Photo21 developped at ENS Paris-Saclay.
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
-
Dependency installation. If you are not using Debian, please feel free to adapt the following instructions.
sudo apt install git gettext python3-django python3-django-allauth python3-django-crispy-forms python3-docutils python3-exifread python3-pil -
Cloning. Change directory to where you want the project to be. In production, we usually use
/var/www/photos/as therootuser.git clone https://codeberg.org/krek0/photo21.git && cd photo21 -
Configuration (production only).
sudo mkdir static media sudo chmod +x maintenance_tool.sh -
Database (production only). In development, you may use SQLite (no setup). In production, we use PostgreSQL which require a bit of setup:
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; -
Initialization., In production, please use
www-datauser../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 -
Maintenance Mode., In production to toggle the server mainteance mode
./maintenance_tool.sh
Docker install
-
Create a
docker-compose.yml: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" -
Start the stack:
docker compose up -dOn first start the container will run migrations and create a default admin account automatically.
-
Default credentials — change these immediately after first login:
Field Value Username adminPassword adminEmail admin@localhostAdmin panel:
http://localhost:8080/admin/ -
Passwords to change in
docker-compose.ymlbefore going to production:POSTGRES_PASSWORD/DB_PASSWORD— database passwordSECRET_KEY— Django secret key (use a long random string)- Log in to the admin panel and change the
adminuser password
-
Enjoy \o/
In development, you can launch the development server using:
(env)$ ./manage.py runserver