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
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
Metadata Files
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
81for the admin interface. - Port
80for HTTP traffic. - Port
443for HTTPS traffic.
- Port
- 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
8080for external access. - Environment variables configure the database connection.
3. PostgreSQL Database
- Provides a database backend for the web application.
- Exposes port
5432for 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
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 (
readstreamsandupdatestatus). 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.ymlfile to their latest stable versions to incorporate security fixes. - If required, you can update the
tom-toolkitthat 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
- Repositories: 43
- Profile: https://github.com/ADACS-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
- python 3.11 build
- jc21/nginx-proxy-manager latest
- postgres 12.1
- 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