otter: local-only config
							parent
							
								
									5e456fe0b2
								
							
						
					
					
						commit
						10664f10cb
					
				|  | @ -0,0 +1,10 @@ | |||
| services: | ||||
|   app: | ||||
|     image: 'git.rustybever.be/chewing_bever/otter:latest' | ||||
| 
 | ||||
|     environment: | ||||
|       - 'RUST_LOG=debug' | ||||
|     ports: | ||||
|       - '8017:8080' | ||||
|     volumes: | ||||
|       - '/mnt/data1/otter/data:/data' | ||||
|  | @ -0,0 +1,12 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| data_dir='/mnt/data1/otter/data' | ||||
| snapshot_dir="${data_dir}.snapshot" | ||||
| 
 | ||||
| # Read-only snapshot for atomic backup | ||||
| btrfs subvolume snapshot -r "$data_dir" "$snapshot_dir" || exit $? | ||||
| 
 | ||||
| /usr/local/bin/restic backup "$snapshot_dir" | ||||
| 
 | ||||
| # Always remove snapshot subvolume, even if restic fails | ||||
| btrfs subvolume delete "$snapshot_dir" | ||||
|  | @ -0,0 +1,13 @@ | |||
| [Unit] | ||||
| Description=Gpodder.net API implementation | ||||
| After=docker.service | ||||
| Requires=docker.service | ||||
| 
 | ||||
| [Service] | ||||
| Type=exec | ||||
| WorkingDirectory=/etc/otter | ||||
| ExecStart=/usr/bin/docker compose up | ||||
| ExecStop=/usr/bin/docker compose down | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
|  | @ -0,0 +1,5 @@ | |||
| --- | ||||
| - name: 'restart otter' | ||||
|   ansible.builtin.service: | ||||
|     name: 'otter' | ||||
|     state: 'restarted' | ||||
|  | @ -0,0 +1,68 @@ | |||
| --- | ||||
| - name: Ensure data directory is present | ||||
|   ansible.builtin.file: | ||||
|     path: '/mnt/data1/otter' | ||||
|     state: directory | ||||
|     mode: '0755' | ||||
|     owner: 'root' | ||||
|     group: 'root' | ||||
| 
 | ||||
| - name: Ensure data subvolumes are present | ||||
|   community.general.btrfs_subvolume: | ||||
|     name: '/otter/{{ item }}' | ||||
|   loop: | ||||
|     - 'data' | ||||
| 
 | ||||
| - name: Ensure subvolume permissions are correct | ||||
|   ansible.builtin.file: | ||||
|     path: "/mnt/data1/otter/{{ item }}" | ||||
|     state: directory | ||||
|     mode: '0755' | ||||
|     owner: '82' | ||||
|     group: '82' | ||||
|   loop: | ||||
|     - 'data' | ||||
| 
 | ||||
| - name: Ensure configuration directory is present | ||||
|   ansible.builtin.file: | ||||
|     path: '/etc/otter' | ||||
|     state: directory | ||||
|     mode: '0755' | ||||
| 
 | ||||
| - name: Ensure compose file is present | ||||
|   ansible.builtin.copy: | ||||
|     src: 'compose.yml' | ||||
|     dest: '/etc/otter/compose.yml' | ||||
|     mode: '0644' | ||||
|     owner: 'root' | ||||
|     group: 'root' | ||||
|   notify: 'restart otter' | ||||
| 
 | ||||
| - name: Ensure backup scripts are present | ||||
|   ansible.builtin.copy: | ||||
|     src: "otter.{{ item }}.backup.sh" | ||||
|     dest: "/etc/backups/otter.{{ item }}.backup.sh" | ||||
|     owner: 'root' | ||||
|     group: 'root' | ||||
|     mode: '0644' | ||||
|   loop: | ||||
|     - 'data' | ||||
| 
 | ||||
| - name: Ensure service file is present | ||||
|   ansible.builtin.copy: | ||||
|     src: 'otter.service' | ||||
|     dest: '/lib/systemd/system/otter.service' | ||||
|     owner: 'root' | ||||
|     group: 'root' | ||||
|     mode: '0644' | ||||
|   register: res | ||||
| 
 | ||||
| - name: systemd-reload | ||||
|   ansible.builtin.systemd_service: | ||||
|     daemon_reload: true | ||||
|   when: 'res.changed' | ||||
| 
 | ||||
| - name: Ensure otter service is enabled | ||||
|   ansible.builtin.service: | ||||
|     name: 'otter' | ||||
|     enabled: true | ||||
							
								
								
									
										6
									
								
								ruby.yml
								
								
								
								
							
							
						
						
									
										6
									
								
								ruby.yml
								
								
								
								
							|  | @ -87,3 +87,9 @@ | |||
|   roles: | ||||
|     - digikam | ||||
|   tags: digikam | ||||
| 
 | ||||
| - hosts: ruby | ||||
|   become: yes | ||||
|   roles: | ||||
|     - otter | ||||
|   tags: otter | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue