Architecture Diagram - RopeWiki/app GitHub Wiki

Site architecture

flowchart TD;
    classDef volume fill:#dddddd,stroke:#333,stroke-width:1px
    classDef external fill:#eeeebb
    classDef folder fill:#bbeeee

    subgraph app["app <small>(Single VM)</small>"]
        ropewiki_db
        click ropewiki_db "https://github.com/RopeWiki/app/tree/master/database" "MySQL database with non-file site data"

        ropewiki_webserver
        click ropewiki_webserver "https://github.com/RopeWiki/app/tree/master/webserver" "MediaWiki server and file-based site data/uploads"

        ropewiki_reverse_proxy
        click ropewiki_reverse_proxy "https://github.com/RopeWiki/app/tree/master/reverse_proxy" "TLS termination and redirects"

        ropewiki_backup_manager
        click ropewiki_backup_manager "https://github.com/RopeWiki/app/tree/master/backup_manager" "Exposes site data for backup"

        ropewiki_mailserver
        click ropewiki_mailserver "https://github.com/RopeWiki/app/tree/master/mailserver" "SMTP relay server to send email"

        ropewiki_database_storage@{shape:cyl}
        class ropewiki_database_storage volume
        ropewiki_proxy_certs@{shape:cyl}
        class ropewiki_proxy_certs volume
        ropewiki_proxy_logs@{shape:cyl}
        class ropewiki_proxy_logs volume
        ropewiki_backup_ssh@{shape:cyl}
        class ropewiki_backup_ssh volume

        images["/rw/mount/images"]@{shape:cyl}
        class images folder
        sqlbackup["/rw/mount/sqlbackup"]@{shape:cyl}
        class sqlbackup folder
    end

    Internet["Public Internet"]
    class Internet external
    backupreader["<code>backupreader</code> users"]
    class backupreader external
    click backupreader "https://github.com/RopeWiki/app/tree/master/backup_manager/pubkeys"
    GMail
    class GMail external

    luca_server["luca server<br>(Windows VM)"]
    click luca_server "https://github.com/RopeWiki/RWServer"
    class luca_server external

    ropewiki_webserver -- MySQL 3306 --> ropewiki_db -- /var/lib/mysql --> ropewiki_database_storage
    ropewiki_webserver -- /usr/share/nginx/html/ropewiki/images --> images
    ropewiki_webserver -- SMTP 25 --> ropewiki_mailserver -- TLS SMTP 587 --> GMail
    ropewiki_reverse_proxy -- HTTP 80 --> ropewiki_webserver
    ropewiki_reverse_proxy -- HTTP 80<br>/luca/* --> luca_server
    Internet -- HTTP 8080 --> ropewiki_webserver
    Internet -- HTTPS 443 --> ropewiki_reverse_proxy
    Internet -- HTTP 80 --> ropewiki_reverse_proxy
    backupreader -- SSH 22001 --> ropewiki_backup_manager -- MySQL 3306 --> ropewiki_db
    ropewiki_backup_manager -- mysqldump --> sqlbackup --> ropewiki_backup_manager
    images --> ropewiki_backup_manager
    ropewiki_backup_manager -- /etc/ssh --> ropewiki_backup_ssh
    ropewiki_reverse_proxy -- /etc/letsencrypt --> ropewiki_proxy_certs
    ropewiki_reverse_proxy -- /logs --> ropewiki_proxy_logs

    subgraph Legend
        Container["docker container"]
        Volume["docker-managed volume"]
        class Volume volume
        Folder["Folder on host machine"]
        class Folder folder
    end
Loading
⚠️ **GitHub.com Fallback** ⚠️