{"id":16971747,"url":"https://github.com/julienparis/synapse","last_synced_at":"2026-04-12T00:02:51.669Z","repository":{"id":93935213,"uuid":"124707209","full_name":"JulienParis/synapse","owner":"JulienParis","description":"dataviz 3D du catalogue de la bibliothèque de St-Herblain","archived":false,"fork":false,"pushed_at":"2018-03-11T00:25:13.000Z","size":9096,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-01-26T14:48:40.760Z","etag":null,"topics":["dataviz","flask","javascript","mongodb","mysql","python","scheduler","soap-web-services","socket-io","threejs","webgl"],"latest_commit_sha":null,"homepage":"http://www.la-bibliotheque.com/synapse-la-bibliotheque-en-3d/#section_contenu","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JulienParis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-10T23:28:30.000Z","updated_at":"2018-03-11T00:30:03.000Z","dependencies_parsed_at":"2023-05-23T15:00:45.497Z","dependency_job_id":null,"html_url":"https://github.com/JulienParis/synapse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulienParis%2Fsynapse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulienParis%2Fsynapse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulienParis%2Fsynapse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulienParis%2Fsynapse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JulienParis","download_url":"https://codeload.github.com/JulienParis/synapse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244860608,"owners_count":20522466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dataviz","flask","javascript","mongodb","mysql","python","scheduler","soap-web-services","socket-io","threejs","webgl"],"created_at":"2024-10-14T00:54:23.489Z","updated_at":"2026-04-12T00:02:51.643Z","avatar_url":"https://github.com/JulienParis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\n## **synapse** is a web application based on [Flask](http://flask.pocoo.org/) Python microframework, mongoDB database, Zeep, mySQL, and Three.js\n## **synapse** is available online for now at : **[synapse.la-bibliotheque.com](http://synapse.la-bibliotheque.com)**.\n\n\n----------------------------------------------------\n## Licence \u0026 copyrights :\n\n- **Licence** : [GNU](https://github.com/JulienParis/synapse/blob/master/LICENSE)\n\n- **Project by** : [Julien Paris](http://jpylab.com/)\n\n- **Author code** : Copyright (C) 2017 [Julien Paris](http://jpylab.com/)\n\n- **Contact** : [jparis.py@gmail.com](mailto:jparis.py@gmail.com)\n\n\n\u003e\nCopyright (C) 2017  Julien PARIS\n\u003e\n\n\n-----------------------------------------------------\n## Features :\n\nThis application proposes several features :\n\n\n-----------------------------------------------------\n# _DOCUMENTATION_ :\n\n## _REQUIREMENTS_ | Application requirements :\n\n  - Python 2.7\n  - MongoDB\n  - Python libraries : Pandas, flask-socketio, eventlet, zeep, flask-mysqldb\n  - NGINX\n  - Gunicorn\n  - server side : ubuntu 16.04\n\n\n---\n\n## _LOCAL SETTINGS_ | Installation on a local machine :\n\n\n  \u003e mysql use (temporary) : https://stackoverflow.com/questions/8195418/cant-access-mysql-from-command-line-mac\n  ```\n  $ export PATH=$PATH:/usr/local/mysql/bin\n  ```\n\n  \u003e\n  ```\n  $ git config --global user.name 'your_username'\n  $ git config --global user.email ‘youremail@email.com’\n  ```\n\n  - clone synapse project from github :\n  \u003e\n  ```\n  $ git clone https://github.com/JulienParis/synapse.git\n\n  ```\n\n  - install, create and activate a virtual environment :\n  \u003e\n  ```\n  $ pip install virtualenv\n  $ sudo virtualenv venv\n  $ source venv/bin/activate\n  ```\n\n  - install Python dependencies (Flask, pandas, etc...) within the virtual environment:\n  \u003e\n  ```\n  (venv)$ pip install -r requirements.txt\n  ```\n\n  - update lxml libs\n  \u003e\n  ```\n  $ brew install libxml2\n  $ brew install libxslt\n  $ brew link libxml2 --force\n  $ brew link libxslt --force\n  ```\n  - run synapse in debugging mode :\n  \u003e\n  ```\n  (venv)$ python run_synapse.py\n  ```\n\n  - in browser open the following address : `http://127.0.0.1:5000`\n\n  ---\n\n\n\n## _SERVER_CONFIGURATION_ | Installation on Ubuntu server (after SSH access):\n\n  - connect to server : `$ ssh your_username@xx.xx.xxx.xx`\n\n  - update ubuntu : `$ sudo apt-get update`\n\n  - configure server firewall for socketIO (port 5000), NGINX/Gunicorn (port 8000, www) :\n  \u003e\n  ```\n  $ sudo ufw allow www\n  $ sudo ufw allow http\n  $ sudo ufw allow 8000\n  $ sudo ufw allow 5000\n  $ sudo ufw allow 22\n  $ sudo ufw allow 443\n  $ sudo ufw enable\n  $ sudo apt-get update\n  $ sudo apt-get install ntp\n  ```\n\n  - *** if needed: `$ sudo ufw delete allow 80`\n\n  - check enabled ports : `$ sudo ufw show added`\n\n\n\n## _MONGODB_ | MongoDB installation :\n\n  - check installation procedure on  :\n  \u003chttps://docs.mongodb.com/manual/installation/\u003e\n  \u003chttps://docs.mongodb.com/manual/administration/install-on-linux/\u003e\n  \u003chttps://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/\u003e\n\n  - Import the public key used by the package management system\n  \u003e\n  ```\n  $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6\n  ```\n\n  - create a list file for mongodb (Ubuntu 16.04)\n  \u003e\n  ```\n  $ echo \"deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse\" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list\n  ```\n\n  - install mongodb\u003e\n  \u003e\n  ```\n  $ sudo apt-get update\n  $ sudo apt-get install -y mongodb-org\n  ```\n\n  - create `~/data/db` and authorize in read-write (on Ubuntu)\n  - cf : \u003chttps://stackoverflow.com/questions/7948789/mongodb-mongod-complains-that-there-is-no-data-db-folder\u003e\n  \u003e\n  ```\n  $ sudo mkdir -p /data/db\n  $ grep mongo /etc/passwd\n  --\u003e mongodb:x:_123_:_456_::/home/mongodb:/bin/false\n  $ sudo chmod 0755 /data/db\n  $ sudo chown -R _123_:_456_ /data/db\n  $ sudo chown -R `id -u` /data/db\n  ```\n\n  - *** start mongo shell (optional) / test mongo once data/db created : `$ mongod`\n\n  - start mongodb : `$ sudo service mongod start`\n  - stop  mongodb : `$ sudo service mongod stop`\n\n\n\n## _GIT integration + SSH_ on Ubuntu server ****\n\n  - cf : \u003chttps://www.youtube.com/watch?v=OtxdNuodlIE\u003e\n  - cf : \u003chttps://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-16-04\u003e\n\n  - connect to server : `—\u003e your_username@xx.xx.xxx.xx $`\n\n  - ** if not set yet : create SSH key\n  \u003e\n  ```\n  $ ssh-keygen -t rsa -C \"youremail@email.com\" -b 4096\n  or\n  $ ssh-keygen -t rsa -b 4096\n  (save it to /root/.ssh/id_rsa +Y )\n  (empty passphrase + Y )\n  ```\n\n  - ** check if ssh-agent enabled\n  \u003e\n  ```\n  $ eval \"$(ssh-agent -s)\"\n  --\u003e Agent pid 1234\n  ```\n\n  - add identity :\n  \u003e\n  ```\n  $ ssh-add ~/.ssh/id_rsa\n  $ cat ~/.ssh/id_rsa.pub\n  (copy ssh key)\n  ```\n\n  - add .ssh / config  :\n  - cf : \u003chttps://about.gitlab.com/2016/02/18/gitlab-dot-com-now-supports-an-alternate-git-plus-ssh-port/\u003e\n  \u003e\n  ```\n  $ sudo vi ~/.ssh/config\n  (copy paste + ESC + :WQ + enter)\n  Host gitlab.com\n    Hostname altssh.gitlab.com\n    User git\n    Port 443\n    PreferredAuthentications publickey\n    IdentityFile ~/.ssh/id_rsa\n  ```\n\n  - go to gitlab / github (on gitlab : https://gitlab.com/profile/keys) : `--\u003e add ssh key to authorized keys / deployment keys`\n\n  - back to server - ssh : `—\u003e your_username@xx.xx.xxx.xx:$ ...`\n\n  - install GIT on the server : `$ sudo apt-get install git`\n\n  - config GIT :\n  \u003e\n  ```\n  $ git config --global user.name 'yourname'\n  $ git config --global user.email ‘youremail@email.com’\n  ```\n\n  - create a directory to store apps : `$ sudo mkdir apps`\n\n  - go to home/apps + add project\n  \u003e\n  ```\n  $ cd apps\n  $ git config --list\n  $ git init\n  $ git remote add origin https://github.com/JulienParis/synapse.git\n  ```\n\n  - and clone :\n  \u003e\n  ```\n  $ git clone git@github.com/JulienParis/synapse.git\n  $ ...\n  $ git remote -v\n  ```\n\n  - check if files were copied with a simple `$ ls`\n\n  - also see : \u003chttps://www.youtube.com/watch?v=swMJHoo1IBI\u003e\n\n\n\n## _FW_NGINX_ on Ubuntu server ****\n\n\n  - install NGINX on the server : cf \u003chttps://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04\u003e\n  \u003e\n  ```\n  $ sudo apt-get install nginx\n  $ service nginx restart\n  $ sudo ufw app list\n  $ sudo ufw allow 'Nginx Full\n  $ sudo ufw status\n  ```\n\n  - check web server : `$ systemctl status nginx`\n  \u003e\n  ```\n  $ sudo apt-get install curl\n  $ curl -4 icanhazip.com\n  ```\n\n  - install Python, PIP, and dependencies :\n  \u003e\n  ```\n  $ sudo apt-get install python-pip python-dev\n  $ sudo apt-get install libmysqlclient-dev\n  $ sudo apt-get install libssl-dev ---\u003e for cryptography\n  $ sudo apt-get install python-mysqldb\n  $ pip install -r requirements.txt\n  $ pip install gunicorn\n  $ pip install eventlet\n  ```\n\n  - configure NGINX (reroute port 5000 to root) :\n  \u003e\n  ```\n  $ cd ~/etc/nginx/sites-enabled\n  ```\n\n  - create NGINX configuration file for synapse\n  \u003e\n  ```\n  $ sudo vi synapse\n  ESC + i\n  ```\n\n  - copy/paste NGINX configuration settings\n  \u003e\n  ```\n  \t# configuration containing list of application servers\n  \tupstream app_server {\n  \t  server 0.0.0.0:5000 fail_timeout=0;\n  \t}\n  \t# configuration for Nginx\n  \tserver {\n  \t  # running port\n  \t  listen 80 default_server ;\n  \t  server_name synapse.la-bibliotheque.com ;\n  \t  # Proxy connection to the application servers\n  \t  location / {\n  \t    proxy_pass http://app_server ;\n  \t    proxy_redirect off ;\n  \t    proxy_set_header Host $http_host;\n  \t    proxy_set_header X-Real-IP $remote_addr;\n  \t    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n  \t    proxy_set_header X-Forwarded-Host $server_name;\n  \t  }\n  \t}\n  ```\n\n  - save `synapse` NGINX config file : `ESC + :wq + ENTER`\n\n\n  - remove default nginx file from `/etc/nginx/sites-enabled`\n  \u003e\n  ```\n  $ sudo rm default\n  ```\n\n  - test for syntax errors by typing : `$ sudo nginx -t`\n\n  - restart the NGINX process to read the our new config : `$ sudo service nginx restart`\n\n\n  - DNS settings : https://askubuntu.com/questions/346838/how-do-i-configure-my-dns-settings-in-ubuntu-server\n  \u003e\n  ```\n  $ cd ~/etc/networks\n  $ sudo nano interfaces\n  ...\n  dns-nameservers ... 80.82.225.40\n  ...\n  $ sudo ifdown eth0 \u0026\u0026 sudo ifup eth0\n  ```\n  \n  \u003e edit etc/hosts --\u003e https://www.imore.com/how-edit-your-macs-hosts-file-and-why-you-would-want\n  \u003e add IP to redirect \n\n  - copy original config.py file to server (from local machine)\n  - cf : \u003chttps://unix.stackexchange.com/questions/106480/how-to-copy-files-from-one-machine-to-another-using-ssh\u003e\n  \u003e\n  ```\n  $ scp /Users/username/PATH/TO/PROJECT/config.py your_username@xx.xx.xxx.xx:/home/julien/apps/synapse\n  ```\n\n  - GIT maintainance : pull when changes\n  \u003e\n  ```\n  $ ssh your_username@xx.xx.xxx.xx    ... + pwd\n  $ cd apps/synapse\n  $ git pull\n  ```\n\n  - run application : go to same level than `wsgi.py` and start app with Gunicorn\n  - cf : https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04\n  - cf : http://docs.gunicorn.org/en/stable/settings.html#raw-env \n  \u003e\n  ```\n  $ cd apps/synapse\n  // deprecated // $ gunicorn --bind=0.0.0.0:5000 —-timeout=120 --workers=1 —-worker-class=eventlet wsgi:app \u0026\n  $ gunicorn -b 0.0.0.0:5000 -k eventlet -t 120 -w 1  wsgi:app\n  ```\n\n  - ( if needed / stop gunicorn server ) : `$ pkill gunicorn`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulienparis%2Fsynapse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjulienparis%2Fsynapse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulienparis%2Fsynapse/lists"}