Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| project:coopcloud_spike [2025/11/24 18:10] – jade | project:coopcloud_spike [2025/12/05 13:24] (current) – [Experiment 3: Run Kiwix on Raspberry Pi] jade | ||
|---|---|---|---|
| Line 30: | Line 30: | ||
| ===== Experiments ===== | ===== Experiments ===== | ||
| - | - Install an existing Co-op Cloud app with abra | + | - ✅ Install an existing Co-op Cloud app with abra |
| - | - Build a [[https:// | + | - ✅ Build a [[https:// |
| - | - Run the Co-op Cloud Kiwix recipe on a Raspberry Pi | + | - ✅ Run the Co-op Cloud Kiwix recipe on a Raspberry Pi |
| - | - //(unknown experiment to verify extending capabilities, | + | - ✅ Deploy a dummy app that can list other installed apps |
| ==== Experiment 1: Try using abra ==== | ==== Experiment 1: Try using abra ==== | ||
| Line 46: | Line 46: | ||
| Overall using abra was a very nice experience. The manual commands needed to go from new VPS to abra are so few that it doesn' | Overall using abra was a very nice experience. The manual commands needed to go from new VPS to abra are so few that it doesn' | ||
| + | I'm leaning towards thinking that Abra should be run on the development machine, not on the server. That means that Merri-bek Tech Node Stewards (Operators in Co-op cloud speak) could share a git repository and store the abra config there. I'd like to test this approach. | ||
| + | |||
| + | ==== Experiment 2: Build Kiwix Recipe ==== | ||
| + | |||
| + | This was pretty straightforward to build. I used abra locally, which seems pretty essential for local development of a recipe. It handled things pretty well. It's up and running (for the moment) at [[https:// | ||
| + | |||
| + | ==== Experiment 3: Run Kiwix on Raspberry Pi ==== | ||
| + | |||
| + | There seems to be no fundamental obstacle to running kiwix on a Raspberry Pi, providing you pick a container image built for the pi. My recipe uses the image provided by [[https:// | ||
| + | |||
| + | The recipe that I build is a draft at this stage. It has the following compose | ||
| + | |||
| + | < | ||
| + | --- | ||
| + | services: | ||
| + | kiwix-serve: | ||
| + | image: offlineinternet/ | ||
| + | networks: | ||
| + | - proxy | ||
| + | volumes: | ||
| + | - kiwix_data:/ | ||
| + | deploy: | ||
| + | restart_policy: | ||
| + | condition: on-failure | ||
| + | labels: | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | networks: | ||
| + | proxy: | ||
| + | external: true | ||
| + | volumes: | ||
| + | kiwix_data: | ||
| + | </ | ||
| + | |||
| + | Here are some things I learned: | ||
| + | |||
| + | * There is no way to mark the Coop Cloud recipe as supporting particular platforms, despite the fact that the docker image is tagged that way. | ||
| + | * As part of this I ran this on a pi on my local network at radish house. Accessing it on my local network as both radish.local and via an external domain like radish.nodes.merri-bek.tech was hard. I had to pick one. There is an EXTRA_DOMAINS feature in the traefik recipe to play with though. | ||
| + | * If serving locally, eg at radish.local, | ||
| + | ==== Experiment 4: Ensure that an app can get access to the running stacks ==== | ||
| + | |||
| + | I conducted this by building a dummy recipe which I called spikespy. It had the following config: [[https:// | ||
| + | |||
| + | When I log into the debian/ | ||
| + | |||
| + | For example, it works if I do: | ||
| + | |||
| + | < | ||
| + | docker -H tcp:// | ||
| + | </ | ||
| + | |||
| + | But, it is configured to not allow docker exec, and so if I do: | ||
| + | |||
| + | < | ||
| + | docker -H tcp:// | ||
| + | </ | ||
| + | |||
| + | I get a forbidden error. | ||
| + | |||
| + | ===== Notes for Coop Cloud ===== | ||
| + | |||
| + | - When using abra on the server (obviously not the golden path, so may be unimportant) the default server is not given a domain (it's just default), so each app needs to have that domain entered on creation. Otherwise it'll use '' | ||
| + | - In the New Operators Tutorial, it's light on [[https:// | ||
| + | - The New Operators tutorial could perhaps help people through edge cases of server setup a bit more. For example, a fresh Ubuntu noble VPS on Digital Ocean hits the problem with swarm init where it detects two IP addresses and it needs you to use '' | ||
| + | - In the New Operators tutorial, it suggests the command '' | ||
| + | - The reason I first tried using abra on the server was actually just that the documentation for installing abra is a bit subtle about switching to using your own machine after all previous sections had been running the commands on the server. It is written there, in the first sentence //Now we can install abra locally on your machine// but I'd probably make it strong. Like " | ||
| + | - It might be nice if the documentation mentioned that on deploying a new app, you'll need to refresh the page a few times to cause the SSL certificate to get fetched. | ||
