https://github.com/adacs-australia/sso-alert

https://github.com/adacs-australia/sso-alert

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: ADACS-Australia
  • Language: Python
  • Default Branch: main
  • Size: 392 KB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created almost 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme

README.md

SSO Alert System UI

This is the User Interface of the Siding Spring Observatory's Alert System. This project uses Docker Compose to set up a reverse proxy with Nginx Proxy Manager, a web application, and a PostgreSQL database. Each service is defined within the docker-compose.yml file, ensuring a modular and scalable setup.

Services

1. Nginx Proxy Manager

  • Manages reverse proxy settings and SSL certificates.
  • Exposes:
    • Port 81 for the admin interface.
    • Port 80 for HTTP traffic.
    • Port 443 for HTTPS traffic.
  • Stores configuration and SSL data in mounted volumes.

2. Web Application

  • Runs a web application built from the local directory.
  • Connects to the PostgreSQL database.
  • Exposes port 8080 for external access.
  • Environment variables configure the database connection.

3. PostgreSQL Database

  • Provides a database backend for the web application.
  • Exposes port 5432 for database access.
  • Stores persistent data in a local volume.

Cron jobs

In addition to the services described above, the system employs two cron jobs to read streams and update submitted observation status. These jobs run management commands inside the Docker container at specified intervals and log the output for monitoring.

1. Read Streams via run_readstreams.sh Cron Job

This cron job runs every 5 minutes and executes the readstreams management command.

2. Update Status run_updatestatus.sh Cron Job

This cron job runs every 2 hours and executes the updatestatus management command.

The Web Application service is Built with

Django tom

Installation

To run the prototype locally, please follow the below instructions.

cd <repo_location> git clone --recursive git@gitlab.com:CAS-eResearch/external/sso-alert/ui.git python3 -m venv <env_name> source <env_name>/bin/activate python3 -m pip install -r ui/requirements.txt

Run project

```

cd ui/sso_tom python manage.py runserver ```

The project will now be available at http://localhost:8000/

Software Maintenance Documentation

There are some steps which could be followed by the IT people to make sure the application is running smoothly.

1. Regular Monitoring and Logs

  • Ensure that cron jobs are running as expected by checking the logs generated by the scripts (readstreams and updatestatus). Logs are stored in date-based subdirectories to facilitate monitoring.
  • Review logs periodically for any signs of errors, failures, or abnormal behavior. Any issues in the cron jobs should be investigated immediately to avoid potential disruptions in application functionality.

1.1 Do I need to back up cron job logs?

Not necessarily. The application will be able to run smoothly after restarting even if you don't do the backup.

2. Backup Strategy

  • Regularly back up essential data, i.e., the PostgreSQL database to prevent data loss. Automated and secured backups should be scheduled if possible.
  • Use volume mounts in Docker to ensure data persistence across container restarts. For example, the PostgreSQL data is stored in a mounted volume, which should be backed up as part of the disaster recovery plan.

2.1 Where is the Data Stored

The PostgreSQL service stores its data in the following volume mount - ./postgresql/data:/var/lib/postgresql/data - This is where the actual PostgreSQL database files are stored. All database records, schemas, and configurations are stored here.

2.2 What to Back Up

PostgreSQL Data (./postgresql/data): This directory contains the full database for your application. It is essential to back this up regularly, as it stores all the critical data required for the application's operation.

3. Security Updates

  • Stay up-to-date with security patches for both the Docker containers (e.g., Nginx, PostgreSQL) and the application dependencies. Regularly update images used in the docker-compose.yml file to their latest stable versions to incorporate security fixes.
  • If required, you can update the tom-toolkit that is used under the hood of the web application, however, it could potentially lead to various errors in the extended UI components which need to be fixed in the UI code.
  • Ensure that SSL certificates managed by Nginx Proxy Manager are renewed automatically.

4. Database Maintenance

  • Monitor the database size and storage utilization, especially in the mounted volumes.

Owner

  • Name: Astronomy Data and Computing Services
  • Login: ADACS-Australia
  • Kind: organization
  • Location: Australia

GitHub Events

Total
  • Issue comment event: 1
  • Push event: 1
  • Pull request review event: 1
  • Fork event: 1
Last Year
  • Issue comment event: 1
  • Push event: 1
  • Pull request review event: 1
  • Fork event: 1

Dependencies

sso_tom/Dockerfile docker
  • python 3.11 build
sso_tom/docker-compose.yml docker
  • jc21/nginx-proxy-manager latest
  • postgres 12.1
sso_tom/requirements.txt pypi
  • Django ==4.2.9
  • Markdown ==3.5.2
  • PyYAML ==6.0.1
  • asdf ==3.0.1
  • asdf-astropy ==0.5.0
  • asdf-coordinates-schemas ==0.2.0
  • asdf-standard ==1.0.3
  • asdf-transform-schemas ==0.4.0
  • asdf-unit-schemas ==0.1.0
  • asdf-wcs-schemas ==0.3.0
  • asgiref ==3.7.2
  • astroplan ==0.9.1
  • astropy ==5.3.4
  • astroquery ==0.4.6
  • async-timeout ==4.0.3
  • attrs ==23.2.0
  • beautifulsoup4 ==4.12.3
  • certifi ==2023.11.17
  • charset-normalizer ==3.3.2
  • crispy-bootstrap4 ==2023.1
  • dj-database-url >=0.5.0
  • django-bootstrap4 ==23.4
  • django-contrib-comments ==2.2.0
  • django-crispy-forms ==2.1
  • django-dramatiq ==0.11.6
  • django-extensions ==3.2.3
  • django-filter ==23.5
  • django-gravatar2 ==1.4.4
  • django-guardian ==2.4.0
  • djangorestframework ==3.14.0
  • dramatiq ==1.15.0
  • fits2image ==0.4.7
  • gevent ==23.9.1
  • greenlet ==3.0.3
  • gunicorn ==20.0.4
  • gwcs ==0.20.0
  • html5lib ==1.1
  • idna ==3.6
  • importlib-metadata ==7.0.1
  • jaraco.classes ==3.3.0
  • jmespath ==1.0.1
  • keyring ==24.3.0
  • more-itertools ==10.2.0
  • ndcube ==2.2.0
  • numpy ==1.24.4
  • packaging ==23.2
  • pillow ==10.2.0
  • plotly ==5.18.0
  • prometheus-client ==0.19.0
  • psycopg2-binary >=2.8
  • pyerfa ==2.0.1.1
  • python-dateutil ==2.8.2
  • python-decouple ==3.8
  • pytz ==2023.3.post1
  • pyvo ==1.5
  • redis ==5.0.1
  • requests ==2.31.0
  • scipy ==1.11.4
  • semantic-version ==2.10.0
  • six ==1.16.0
  • soupsieve ==2.5
  • specutils ==1.12.0
  • sqlparse ==0.4.4
  • tenacity ==8.2.3
  • tom-registration ==0.1.0
  • tomtoolkit ==2.18.5
  • typing_extensions ==4.9.0
  • urllib3 ==2.1.0
  • watchdog ==3.0.0
  • watchdog-gevent ==0.1.1
  • webencodings ==0.5.1
  • zipp ==3.17.0
  • zope.event ==5.0
  • zope.interface ==6.1