140 lines
3.6 KiB
Markdown
140 lines
3.6 KiB
Markdown
# Photo server
|
|
|
|
[](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
|
|
```
|