Skip to content
This repository was archived by the owner on Dec 24, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
2fcbfbc
reset
pmarino90 Apr 3, 2025
999a078
Create new structure
pmarino90 Apr 3, 2025
1c3fe26
Add config setup
pmarino90 Apr 3, 2025
39293c5
Setup basic cli parser
pmarino90 Apr 3, 2025
0670a39
Create basic Makinafile within the current directory
pmarino90 Apr 3, 2025
e7712ed
Ignore makinafiles
pmarino90 Apr 3, 2025
8b7085a
Add file creation feedback
pmarino90 Apr 3, 2025
582d9f6
Add basic SSH wrapper module
pmarino90 Apr 3, 2025
cfb5d67
Extract servers information from makinafile
pmarino90 Apr 3, 2025
b252d9e
Bootstrap basic connection test and DSL
pmarino90 Apr 3, 2025
305a27a
Extract commands to their own modules
pmarino90 Apr 3, 2025
0b82473
Include help message info within commands
pmarino90 Apr 3, 2025
1a56c50
Add specific help section within each command
pmarino90 Apr 3, 2025
b3432f2
Accept a file as option
pmarino90 Apr 3, 2025
48a602b
Catch exceptions to prevent VM to crash and core dump
pmarino90 Apr 4, 2025
02e3be6
Do not raise in parser as it should be able to parse all commands
pmarino90 Apr 4, 2025
22bcbb4
Refactor DSL to be less complex and more extensible
pmarino90 Apr 4, 2025
43b219c
Add possibility to fetch secrets from environment variable
pmarino90 Apr 4, 2025
95a5364
Add standalone block definition
pmarino90 Apr 4, 2025
cf56d28
Define app block
pmarino90 Apr 4, 2025
4cc3d94
Collect docker image configuration
pmarino90 Apr 4, 2025
9d2fd7e
Extract shared functions to utils
pmarino90 Apr 4, 2025
dfb2bd4
Improve error cases testing for app block
pmarino90 Apr 4, 2025
1c2016c
Add debug command to output the current context
pmarino90 Apr 4, 2025
fb8c419
Use maps to store structured data into structs
pmarino90 Apr 4, 2025
792b447
Add wrapper to `:ssh_connection.exec/4`
pmarino90 Apr 5, 2025
0735d7d
Bootstrap simple setup to deploy standalone application on servers
pmarino90 Apr 5, 2025
633c87c
Expose deploy command
pmarino90 Apr 5, 2025
bdff729
Add support for 1Password as secrets provider
pmarino90 Apr 5, 2025
29793cc
Generate a hash for each model
pmarino90 Apr 5, 2025
616b800
Convert to binary to mitigate possible collision
pmarino90 Apr 5, 2025
3328d04
Make docker path configurable
pmarino90 Apr 6, 2025
d9befeb
Do not re-deploy a app if an instance is already running
pmarino90 Apr 6, 2025
b375724
Accept an ID as parameter in `makina` block
pmarino90 Apr 7, 2025
17b8d81
Define file context in its own struct
pmarino90 Apr 7, 2025
700ac19
Use scope to build the app's name
pmarino90 Apr 7, 2025
404cef1
Add hash to a label in the app
pmarino90 Apr 7, 2025
6c178ac
Add volumes definition
pmarino90 Apr 7, 2025
a41b776
Avoid manipulating apps directly but rather use specific functions
pmarino90 Apr 8, 2025
bb2e5d5
Set environment variables to running container
pmarino90 Apr 8, 2025
8c1e58f
Wrap docker commands in a generic Command
pmarino90 Apr 8, 2025
a553adc
Ensure additional docker command parameters are propagated
pmarino90 Apr 8, 2025
f899518
Expose ports
pmarino90 Apr 8, 2025
5b87d56
Bootstrap server prepare command
pmarino90 Apr 8, 2025
1eab8bb
Accept private docker registries
pmarino90 Apr 9, 2025
c39faee
Update 1Password secret provider to use reference and check for Sessi…
pmarino90 Apr 9, 2025
f3044b1
Handle op signin before fetching secrets
pmarino90 Apr 9, 2025
fa9944d
Add network related commands
pmarino90 Apr 9, 2025
f971743
Refactor server connection and preparation to its own module
pmarino90 Apr 9, 2025
9ab2567
Enable or disable HTTPS based on config
pmarino90 Apr 10, 2025
0b581a6
Expose proxy configuration to enable https
pmarino90 Apr 10, 2025
caf8f08
Expose a given app to the web on a domain
pmarino90 Apr 10, 2025
4687e62
Ensure app scopes are correct
pmarino90 Apr 11, 2025
c891aef
Add networks to container
pmarino90 Apr 11, 2025
5cb3ddc
Allow expressing the port to use when proxying the application
pmarino90 Apr 16, 2025
9b5c392
Define `standalone` as its own main command
pmarino90 Apr 17, 2025
f564479
Stop standalone applications
pmarino90 Apr 18, 2025
0697423
Implement barebones update strategy for running apps
pmarino90 Apr 18, 2025
45e3346
Remove stale containers before updating
pmarino90 Apr 20, 2025
d689cd1
Update only applications that changed when deploying new versions
pmarino90 Apr 20, 2025
bc95b47
Isolate technical dependencies to infrastructure
pmarino90 Apr 22, 2025
8865472
Isolate Docker to Infrastructure
pmarino90 Apr 22, 2025
3baed64
Isolate IO in infrastructure
pmarino90 Apr 22, 2025
c3078b1
Update test pipeline
pmarino90 Apr 22, 2025
bc9c52c
Temporary README
pmarino90 Apr 22, 2025
ea31466
Enable test on push to main
pmarino90 Apr 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 20 additions & 4 deletions .formatter.exs
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
# Used by "mix format"

locals_without_parens = [
server: 1,
standalone: 1,
app: 2,
from_docker_image: 1,
docker_registry: 1,
volume: 2,
env: 2,
expose_port: 2,
proxy: 1,
publish_on_domain: 2
]

[
import_deps: [:ecto, :ecto_sql, :phoenix],
subdirectories: ["priv/*/migrations"],
plugins: [Phoenix.LiveView.HTMLFormatter],
inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"]
inputs: ["{mix,.formatter,Makinafile}.exs", "{config,lib,test}/**/*.{ex,exs}"],
locals_without_parens: locals_without_parens,
export: [
locals_without_parens: locals_without_parens
]
]
44 changes: 0 additions & 44 deletions .github/workflows/docker-image.yml

This file was deleted.

45 changes: 0 additions & 45 deletions .github/workflows/elixir.yml

This file was deleted.

42 changes: 42 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Test

on:
workflow_call:

push:
branches:
- "main"

pull_request:
branches: ["main"]

permissions:
contents: read

jobs:
build:
name: Run tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Elixir
uses: erlef/setup-beam@v1
with:
elixir-version: "1.18.2"
otp-version: "27.3.3"
- name: Restore dependencies cache
uses: actions/cache@v3
with:
path: deps
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
restore-keys: ${{ runner.os }}-mix-
- name: Install dependencies
run: mix deps.get
- name: Run tests
run: mix test
25 changes: 5 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,23 @@
# The directory Mix downloads your dependencies sources to.
/deps/

# Where 3rd-party dependencies like ExDoc output generated docs.
# Where third-party dependencies like ExDoc output generated docs.
/doc/

# Ignore .fetch files in case you like to edit your project deps locally.
/.fetch

# If the VM crashes, it generates a dump, let's ignore it too.
erl_crash.dump

# Also ignore archive artifacts (built via "mix archive.build").
*.ez

# Temporary files, for example, from tests.
/tmp/

# Ignore package tarball (built via "mix hex.build").
makina-*.tar

# Ignore assets that are produced by build tools.
/priv/static/assets/

# Ignore digested assets cache.
/priv/static/cache_manifest.json

# In case you use Node.js/npm, you want to ignore these.
npm-debug.log
/assets/node_modules/
# Temporary files, for example, from tests.
/tmp/

# Database files
*.db
*.db-*
burrito_out

.DS_Store

.env
Makinafile.exs
3 changes: 0 additions & 3 deletions .tool-versions

This file was deleted.

98 changes: 0 additions & 98 deletions Dockerfile

This file was deleted.

26 changes: 3 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,7 @@
# Makina
A simple application manager for self-hosted environments

**UNDER ACTIVE DEVELOPMENT, DO NOT USE FOR ANYTHING IMPORTANT**

## Description
Makina is a simple hosting platform for self hosted environment, you pick a server, install Makina and you're ready to host different services there.
It is designed to be simple and generally understandable, doesn't require extensive configuration.

Services are private by default but can be exposed using Traefik, which Makina supports out of the box, with HTTPS enabled by default. Clicking a checbox
in a given service's configuration exposes the service with now more added work (except DNS configuration if needed).

Services are grouped in stacks and every service within a stack can reach the other, however services in other stacks are isolated.

Although Makina aims to be able to support multiple stacks it is not designed to support multi-tenancy, each logged-in user can access and perform the same operations.
A simple application manager for self-hosted environments

## Current Status
At the moment Makina can run on a system with Docker installed and lets you host services of all kinds. To consider this a good 1.0 version the following are missing:
- [ ] Possibility to reference secrets between different services within the same stack
- [ ] Possibility to reference services in others wihin the same stack
- [ ] Simple coverter from `docker-compose.yml` to fully functioning stack
- [ ] Simple installer to support the user in their first setup
## Usage

## Contribution
At the moment I am not accepting direct code contributions.
Being able to keep up with those is rather time consuming and I am not focusing on this full time.
However suggestions, bug reports and so on a more than welcome.
Check here soon for a usable version!
37 changes: 0 additions & 37 deletions assets/css/app.css

This file was deleted.

Loading