Synology Package Repository
Project description
spkrepo
Synology Package Repository
Development
Requirements
- Install docker and docker-compose
- Install python and poetry
- Optionally install direnv and a working poetry layout as described here in your
~/.config/direnv/direnvrc
Installation
- Run postgres, e.g. using docker with
docker compose up db
- Install dependencies with
poetry install
- Run the next commands in the virtual environment
poetry shell
- Create the tables with
flask db upgrade
- Populate the database with some fake packages with
flask spkrepo populate_db
- Add a user with
flask spkrepo create_user -u admin -e admin@synocommunity.com -p adminadmin
- Grant the created user with Administrator permissions
flask roles add admin@synocommunity.com admin
- Grant the created user with Package Administrator permissions
flask roles add admin@synocommunity.com package_admin
- Grant the created user with Developer permissions
flask roles add admin@synocommunity.com developer
To clean data created by fake packages, run flask spkrepo depopulate_db
Run
- Start postgres with
docker compose up db
- Start the development server with
flask run
- Website is available at http://localhost:5000
- Admin interface is available at http://localhost:5000/admin
- NAS interface is available at http://localhost:5000/nas
- API is available at http://localhost:5000/api
- Run the test suite with
pytest -v
Docker Compose Run
- If you also want to run the app in docker you can with
docker compose up app
- You can run both postgres and the app with
docker compose up
Deployment
Configuration
Create a config file ./config.py
to disable debug logs, connect to a database, set a secure key and optionally set a cache:
Use LC_CTYPE=C tr -cd '[:print:]' < /dev/urandom | head -c 64
or base64 < /dev/urandom | head -c 64
to get a random string
DEBUG = False
TESTING = False
SECRET_KEY = "Please-change-me-to-some-random-string"
SQLALCHEMY_ECHO = False
SQLALCHEMY_DATABASE_URI = "postgresql://user:pass@localhost/dbname"
# https://pythonhosted.org/Flask-Caching/#configuring-flask-caching
CACHE_TYPE= "SimpleCache"
# For signing packages
GNUPG_PATH= "/usr/local/bin/gpg"
Docker
Example usage:
docker run -it --rm --name spkrepo -v $(pwd)/data:/data -p 8000:8000 ghcr.io/synocommunity/spkrepo
Additional configuration can be mounted in the container and loaded by putting
the path into SPKREPO_CONFIG
environment variable.
e.g.
docker run -it --rm --name spkrepo -v $(pwd)/data:/data -v $(pwd)/docker-config.py:/docker-config.py -e SPKREPO_CONFIG=/docker-config.py -p 8000:8000 ghcr.io/synocommunity/spkrepo
Serve app via a WSGI server.
Example:
pip install gunicorn
SPKREPO_CONFIG="$PWD/config.py" gunicorn -w 4 'wsgi:app'
Add migration
cd migrations/
alembic revision -m "update build path length"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
spkrepo-0.2.5.tar.gz
(190.3 kB
view details)
Built Distribution
spkrepo-0.2.5-py3-none-any.whl
(199.2 kB
view details)
File details
Details for the file spkrepo-0.2.5.tar.gz
.
File metadata
- Download URL: spkrepo-0.2.5.tar.gz
- Upload date:
- Size: 190.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6978bcd1328a41fe4b3bc6346391fbb97ad9d92018c3e2b43098eed33afa1a7 |
|
MD5 | c7e43ce001af5d8180fd3a65016edd02 |
|
BLAKE2b-256 | 057c4a0ce88c2f12c8015d7560532618faec2f7973c80d187531325eb404e12b |
File details
Details for the file spkrepo-0.2.5-py3-none-any.whl
.
File metadata
- Download URL: spkrepo-0.2.5-py3-none-any.whl
- Upload date:
- Size: 199.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.7 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f393c6f4d86f26ebe3626882b7149a0c022bc7e1805610c612921fc52c8eaa6c |
|
MD5 | 334d3eab454336a16794240483e2e8c5 |
|
BLAKE2b-256 | 801125ec6933aeb9d8b40ace65a50d08e8c537a9eb487d0b64ca553da607d3d3 |