mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 23:54:30 +01:00 
			
		
		
		
	Compare commits
	
		
			9 Commits
		
	
	
		
			c8f7986d5a
			...
			b4a1b513cc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | b4a1b513cc | ||
| c0c64f225c | |||
|  | e1f647bd02 | ||
|  | 39fd3a2471 | ||
|  | 1072e227b8 | ||
|  | cbf7e6fe6c | ||
|  | 950922d041 | ||
|  | 78fe070cd3 | ||
|  | 51d5733578 | 
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -47,3 +47,8 @@ backups/ | |||||||
| env/ | env/ | ||||||
| venv/ | venv/ | ||||||
| db.sqlite3 | db.sqlite3 | ||||||
|  |  | ||||||
|  | # ansibles customs host | ||||||
|  | ansible/host_vars/*.yaml | ||||||
|  | !ansible/host_vars/bde* | ||||||
|  | ansible/hosts | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							| @@ -69,13 +69,31 @@ accessible depuis l'ensemble de votre réseau, pratique pour tester le rendu | |||||||
| de la note sur un téléphone ! | de la note sur un téléphone ! | ||||||
|  |  | ||||||
| ## Installation d'une instance de production | ## Installation d'une instance de production | ||||||
|  | Pour déployer facilement la note il est possible d'utiliser le playbook Ansible (sinon vous pouvez toujours le faire a la main, voir plus bas). | ||||||
|  | ### Avec ansible | ||||||
|  | Il vous faudra un serveur sous debian ou ubuntu connecté à internet et que vous souhaiterez accéder à cette instance de la note sur `note.nomdedomaine.tld`. | ||||||
|  |  | ||||||
|  | 0. Installer Ansible sur votre machine personnelle. | ||||||
|  |  | ||||||
|  | 0. (bis) cloner le dépot sur votre machine personelle. | ||||||
|  |  | ||||||
|  | 1.  Copier le fichier `ansible/host_example` | ||||||
|  | ``` bash | ||||||
|  | $ cp ansible/hosts_example ansible/hosts | ||||||
|  | ``` | ||||||
|  | et ajouter sous [dev] et/ou [prod] les serveurs sur lesquels vous souhaitez installer la note. | ||||||
|  | 2.  Créer un fichier `ansible/host_vars/<note.nomdedomaine.tld.yaml>` sur le modèle des fichiers existants dans `ansible/hosts` et compléter les variables nécessaires. | ||||||
|  |  | ||||||
|  | 3. lancer `ansible/base.yaml -l <nomdedomaine.tld.yaml>` | ||||||
|  | 4. Aller vous faire un café, ca peux durer un moment. | ||||||
|  |  | ||||||
|  | ### Installation manuelle | ||||||
|  |  | ||||||
| **En production on souhaite absolument utiliser les modules Python packagées dans le gestionnaire de paquet.** | **En production on souhaite absolument utiliser les modules Python packagées dans le gestionnaire de paquet.** | ||||||
| Cela permet de mettre à jour facilement les dépendances critiques telles que Django. | Cela permet de mettre à jour facilement les dépendances critiques telles que Django. | ||||||
|  |  | ||||||
| L'installation d'une instance de production néccessite **une installation de Debian Buster ou d'Ubuntu 20.04**. | L'installation d'une instance de production néccessite **une installation de Debian Buster ou d'Ubuntu 20.04**. | ||||||
|  |  | ||||||
| Pour aller vite vous pouvez lancer le Playbook Ansible fournit dans ce dépôt en l'adaptant. |  | ||||||
| Sinon vous pouvez suivre les étapes décrites ci-dessous. | Sinon vous pouvez suivre les étapes décrites ci-dessous. | ||||||
|  |  | ||||||
| 0.  Sous Debian Buster, **activer Debian Backports.** En effet Django 2.2 LTS n'est que disponible dans les backports. | 0.  Sous Debian Buster, **activer Debian Backports.** En effet Django 2.2 LTS n'est que disponible dans les backports. | ||||||
|   | |||||||
| @@ -3,3 +3,4 @@ note: | |||||||
|   server_name: note-beta.crans.org |   server_name: note-beta.crans.org | ||||||
|   git_branch: beta |   git_branch: beta | ||||||
|   cron_enabled: false |   cron_enabled: false | ||||||
|  |   email: notekfet2020@lists.crans.org | ||||||
|   | |||||||
| @@ -3,3 +3,4 @@ note: | |||||||
|   server_name: note-dev.crans.org |   server_name: note-dev.crans.org | ||||||
|   git_branch: beta |   git_branch: beta | ||||||
|   cron_enabled: false |   cron_enabled: false | ||||||
|  |   email: notekfet2020@lists.crans.org | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| [dev] | [dev] | ||||||
| bde3-virt.adh.crans.org | bde-note-dev.adh.crans.org | ||||||
| bde-nk20-beta.adh.crans.org | bde-nk20-beta.adh.crans.org | ||||||
| 
 | 
 | ||||||
| [prod] | [prod] | ||||||
| @@ -3,11 +3,12 @@ | |||||||
|   apt_repository: |   apt_repository: | ||||||
|     repo: deb http://{{ mirror }}/debian buster-backports main |     repo: deb http://{{ mirror }}/debian buster-backports main | ||||||
|     state: present |     state: present | ||||||
|  |   when: ansible_facts['distribution'] == "Debian" | ||||||
|  |  | ||||||
| - name: Install note_kfet APT dependencies | - name: Install note_kfet APT dependencies | ||||||
|   apt: |   apt: | ||||||
|     update_cache: true |     update_cache: true | ||||||
|     default_release: buster-backports |     default_release: "{{ 'buster-backports' if ansible_facts['distribution'] == 'Debian' }}" | ||||||
|     install_recommends: false |     install_recommends: false | ||||||
|     name: |     name: | ||||||
|       # Common tools |       # Common tools | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ | |||||||
|  |  | ||||||
| - name: Use default env vars (should be updated!) | - name: Use default env vars (should be updated!) | ||||||
|   template: |   template: | ||||||
|     src: "env_example" |     src: "env.j2" | ||||||
|     dest: "/var/www/note_kfet/.env" |     dest: "/var/www/note_kfet/.env" | ||||||
|     mode: 0644 |     mode: 0644 | ||||||
|     force: false |     force: false | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								ansible/roles/2-nk20/templates/env.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								ansible/roles/2-nk20/templates/env.j2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | DJANGO_APP_STAGE=prod | ||||||
|  | # Only used in dev mode, change to "postgresql" if you want to use PostgreSQL in dev | ||||||
|  | DJANGO_DEV_STORE_METHOD=sqlite | ||||||
|  | DJANGO_DB_HOST=localhost | ||||||
|  | DJANGO_DB_NAME=note_db | ||||||
|  | DJANGO_DB_USER=note | ||||||
|  | DJANGO_DB_PASSWORD={{ DB_PASSWORD }} | ||||||
|  | DJANGO_DB_PORT= | ||||||
|  | DJANGO_SECRET_KEY=CHANGE_ME | ||||||
|  | DJANGO_SETTINGS_MODULE=note_kfet.settings | ||||||
|  | CONTACT_EMAIL=tresorerie.bde@localhost | ||||||
|  | NOTE_URL= {{note.server_name}} | ||||||
|  |  | ||||||
|  | # Config for mails. Only used in production | ||||||
|  | NOTE_MAIL=notekfet@localhost | ||||||
|  | EMAIL_HOST=smtp.localhost | ||||||
|  | EMAIL_PORT=25 | ||||||
|  | EMAIL_USER=notekfet@localhost | ||||||
|  | EMAIL_PASSWORD=CHANGE_ME | ||||||
|  |  | ||||||
|  | # Wiki configuration | ||||||
|  | WIKI_USER=NoteKfet2020 | ||||||
|  | WIKI_PASSWORD= | ||||||
| @@ -9,6 +9,11 @@ | |||||||
|   retries: 3 |   retries: 3 | ||||||
|   until: pkg_result is succeeded |   until: pkg_result is succeeded | ||||||
|  |  | ||||||
|  | - name: Check if certificate already exists. | ||||||
|  |   stat: | ||||||
|  |     path: /etc/letsencrypt/live/{{note.server_name}}/cert.pem | ||||||
|  |   register: letsencrypt_cert | ||||||
|  |  | ||||||
| - name: Create /etc/letsencrypt/conf.d | - name: Create /etc/letsencrypt/conf.d | ||||||
|   file: |   file: | ||||||
|     path: /etc/letsencrypt/conf.d |     path: /etc/letsencrypt/conf.d | ||||||
| @@ -19,3 +24,17 @@ | |||||||
|     src: "letsencrypt/conf.d/nk20.ini.j2" |     src: "letsencrypt/conf.d/nk20.ini.j2" | ||||||
|     dest: "/etc/letsencrypt/conf.d/nk20.ini" |     dest: "/etc/letsencrypt/conf.d/nk20.ini" | ||||||
|     mode: 0644 |     mode: 0644 | ||||||
|  |  | ||||||
|  | - name: Stop services to allow certbot to generate a cert. | ||||||
|  |   service: | ||||||
|  |     name: nginx | ||||||
|  |     state: stopped | ||||||
|  |  | ||||||
|  | - name: Generate new certificate if one doesn't exist. | ||||||
|  |   shell: "certbot certonly --non-interactive --config /etc/letsencrypt/conf.d/nk20.ini -d {{note.server_name}}" | ||||||
|  |   when: letsencrypt_cert.stat.exists == False | ||||||
|  |  | ||||||
|  | - name: Restart services to allow certbot to generate a cert. | ||||||
|  |   service: | ||||||
|  |     name: nginx | ||||||
|  |     state: started | ||||||
|   | |||||||
| @@ -10,11 +10,11 @@ rsa-key-size = 4096 | |||||||
| # server = https://acme-staging.api.letsencrypt.org/directory | # server = https://acme-staging.api.letsencrypt.org/directory | ||||||
|  |  | ||||||
| # Uncomment and update to register with the specified e-mail address | # Uncomment and update to register with the specified e-mail address | ||||||
| email = notekfet2020@lists.crans.org | email = {{ note.email }} | ||||||
|  |  | ||||||
| # Uncomment to use a text interface instead of ncurses | # Uncomment to use a text interface instead of ncurses | ||||||
| text = True | text = True | ||||||
|  |  | ||||||
| # Use DNS-01 challenge | # Use DNS-01 challenge | ||||||
| authenticator = nginx | authenticator = standalone | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,14 +11,14 @@ | |||||||
|   until: pkg_result is succeeded |   until: pkg_result is succeeded | ||||||
|  |  | ||||||
| - name: Create role note | - name: Create role note | ||||||
|   when: "DB_PASSWORD|bool"    # If the password is not defined, skip the installation |   when: DB_PASSWORD|length > 0 # If the password is not defined, skip the installation | ||||||
|   postgresql_user: |   postgresql_user: | ||||||
|     name: note |     name: note | ||||||
|     password: "{{ DB_PASSWORD }}" |     password: "{{ DB_PASSWORD }}" | ||||||
|   become_user: postgres |   become_user: postgres | ||||||
|  |  | ||||||
| - name: Create NK20 database | - name: Create NK20 database | ||||||
|   when: "DB_PASSWORD|bool" |   when: DB_PASSWORD|length >0 | ||||||
|   postgresql_db: |   postgresql_db: | ||||||
|     name: note_db |     name: note_db | ||||||
|     owner: note |     owner: note | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user