forked from fediversity/fediversity
Compare commits
20 commits
7aa3e5f064
...
7bd58ab40b
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bd58ab40b | |||
| 4f4bea2a01 | |||
| b26fbec7f8 | |||
| 8e83f5b00c | |||
| 46469c033f | |||
| be9cbfb8c5 | |||
| e329a721d4 | |||
| caa497c4a2 | |||
| 659a3593b5 | |||
| 7e24b9e478 | |||
| 7048058d6b | |||
| ed63b582ed | |||
| f04e1d0f40 | |||
| 2365d9a044 | |||
| ecc41a7dfd | |||
| 0419ec38f5 | |||
| 65bba16d83 | |||
| 264fbf8729 | |||
| 65159cdc18 | |||
| 6bb5768ddc |
17 changed files with 97 additions and 220 deletions
|
|
@ -36,7 +36,7 @@
|
||||||
panelConfig:
|
panelConfig:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkMerge mkIf;
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
@ -101,81 +101,90 @@ in
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
mkMerge [
|
||||||
garage-configuration = makeConfigurationResource garageConfigurationResource (
|
|
||||||
{ pkgs, ... }:
|
|
||||||
mkIf (panelConfig.mastodon.enable || panelConfig.peertube.enable || panelConfig.pixelfed.enable) {
|
|
||||||
fediversity = {
|
|
||||||
inherit (panelConfig) domain;
|
|
||||||
garage.enable = true;
|
|
||||||
pixelfed = pixelfedS3KeyConfig { inherit pkgs; };
|
|
||||||
mastodon = mastodonS3KeyConfig { inherit pkgs; };
|
|
||||||
peertube = peertubeS3KeyConfig { inherit pkgs; };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
mastodon-configuration = makeConfigurationResource mastodonConfigurationResource (
|
(mkIf (panelConfig.mastodon.enable || panelConfig.peertube.enable || panelConfig.pixelfed.enable) {
|
||||||
{ pkgs, ... }:
|
garage-configuration = makeConfigurationResource garageConfigurationResource (
|
||||||
mkIf panelConfig.mastodon.enable {
|
{ pkgs, ... }:
|
||||||
fediversity = {
|
{
|
||||||
inherit (panelConfig) domain;
|
fediversity = {
|
||||||
temp.initialUser = {
|
inherit (panelConfig) domain;
|
||||||
inherit (panelConfig.initialUser) username email displayName;
|
garage.enable = true;
|
||||||
# FIXME: disgusting, but nvm, this is going to be replaced by
|
pixelfed = pixelfedS3KeyConfig { inherit pkgs; };
|
||||||
# proper central authentication at some point
|
mastodon = mastodonS3KeyConfig { inherit pkgs; };
|
||||||
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
peertube = peertubeS3KeyConfig { inherit pkgs; };
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
mastodon = mastodonS3KeyConfig { inherit pkgs; } // {
|
(mkIf panelConfig.mastodon.enable {
|
||||||
enable = true;
|
mastodon-configuration = makeConfigurationResource mastodonConfigurationResource (
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
fediversity = {
|
||||||
|
inherit (panelConfig) domain;
|
||||||
|
temp.initialUser = {
|
||||||
|
inherit (panelConfig.initialUser) username email displayName;
|
||||||
|
# FIXME: disgusting, but nvm, this is going to be replaced by
|
||||||
|
# proper central authentication at some point
|
||||||
|
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
||||||
|
};
|
||||||
|
|
||||||
|
mastodon = mastodonS3KeyConfig { inherit pkgs; } // {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
temp.cores = 1; # FIXME: should come from NixOps4 eventually
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
temp.cores = 1; # FIXME: should come from NixOps4 eventually
|
(mkIf panelConfig.peertube.enable {
|
||||||
};
|
peertube-configuration = makeConfigurationResource peertubeConfigurationResource (
|
||||||
}
|
{ pkgs, ... }:
|
||||||
);
|
{
|
||||||
|
fediversity = {
|
||||||
|
inherit (panelConfig) domain;
|
||||||
|
temp.initialUser = {
|
||||||
|
inherit (panelConfig.initialUser) username email displayName;
|
||||||
|
# FIXME: disgusting, but nvm, this is going to be replaced by
|
||||||
|
# proper central authentication at some point
|
||||||
|
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
||||||
|
};
|
||||||
|
|
||||||
peertube-configuration = makeConfigurationResource peertubeConfigurationResource (
|
peertube = peertubeS3KeyConfig { inherit pkgs; } // {
|
||||||
{ pkgs, ... }:
|
enable = true;
|
||||||
mkIf panelConfig.peertube.enable {
|
## NOTE: Only ever used for testing anyway.
|
||||||
fediversity = {
|
##
|
||||||
inherit (panelConfig) domain;
|
## FIXME: Generate and store in NixOps4's state.
|
||||||
temp.initialUser = {
|
secretsFile = pkgs.writeText "secret" "574e093907d1157ac0f8e760a6deb1035402003af5763135bae9cbd6abe32b24";
|
||||||
inherit (panelConfig.initialUser) username email displayName;
|
};
|
||||||
# FIXME: disgusting, but nvm, this is going to be replaced by
|
|
||||||
# proper central authentication at some point
|
|
||||||
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
peertube = peertubeS3KeyConfig { inherit pkgs; } // {
|
(mkIf panelConfig.pixelfed.enable {
|
||||||
enable = true;
|
pixelfed-configuration = makeConfigurationResource pixelfedConfigurationResource (
|
||||||
## NOTE: Only ever used for testing anyway.
|
{ pkgs, ... }:
|
||||||
##
|
{
|
||||||
## FIXME: Generate and store in NixOps4's state.
|
fediversity = {
|
||||||
secretsFile = pkgs.writeText "secret" "574e093907d1157ac0f8e760a6deb1035402003af5763135bae9cbd6abe32b24";
|
inherit (panelConfig) domain;
|
||||||
};
|
temp.initialUser = {
|
||||||
};
|
inherit (panelConfig.initialUser) username email displayName;
|
||||||
}
|
# FIXME: disgusting, but nvm, this is going to be replaced by
|
||||||
);
|
# proper central authentication at some point
|
||||||
|
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
||||||
|
};
|
||||||
|
|
||||||
pixelfed-configuration = makeConfigurationResource pixelfedConfigurationResource (
|
pixelfed = pixelfedS3KeyConfig { inherit pkgs; } // {
|
||||||
{ pkgs, ... }:
|
enable = true;
|
||||||
mkIf panelConfig.pixelfed.enable {
|
};
|
||||||
fediversity = {
|
|
||||||
inherit (panelConfig) domain;
|
|
||||||
temp.initialUser = {
|
|
||||||
inherit (panelConfig.initialUser) username email displayName;
|
|
||||||
# FIXME: disgusting, but nvm, this is going to be replaced by
|
|
||||||
# proper central authentication at some point
|
|
||||||
passwordFile = pkgs.writeText "password" panelConfig.initialUser.password;
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
pixelfed = pixelfedS3KeyConfig { inherit pkgs; } // {
|
);
|
||||||
enable = true;
|
})
|
||||||
};
|
];
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,26 +22,10 @@ let
|
||||||
{ vmName, isTestVm }:
|
{ vmName, isTestVm }:
|
||||||
{
|
{
|
||||||
_module.args = { inherit inputs; };
|
_module.args = { inherit inputs; };
|
||||||
imports =
|
imports = [
|
||||||
[
|
./common/resource.nix
|
||||||
./common/resource.nix
|
(if isTestVm then ./test-machines + "/${vmName}" else ./machines + "/${vmName}")
|
||||||
]
|
];
|
||||||
++ (
|
|
||||||
if isTestVm then
|
|
||||||
[
|
|
||||||
./test-machines/${vmName}
|
|
||||||
{
|
|
||||||
nixos.module.users.users.root.openssh.authorizedKeys.keys = [
|
|
||||||
# allow our panel vm access to the test machines
|
|
||||||
(import ../keys).systems.fedi201
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[
|
|
||||||
./machines/${vmName}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
fediversityVm.name = vmName;
|
fediversityVm.name = vmName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
fediversityVm = {
|
|
||||||
vmId = 7011;
|
|
||||||
proxmox = "fediversity";
|
|
||||||
|
|
||||||
hostPublicKey = builtins.readFile ./ssh_host_ed25519_key.pub;
|
|
||||||
unsafeHostPrivateKey = builtins.readFile ./ssh_host_ed25519_key;
|
|
||||||
|
|
||||||
domain = "abundos.eu";
|
|
||||||
ipv4 = {
|
|
||||||
address = "95.215.187.61";
|
|
||||||
gateway = "95.215.187.1";
|
|
||||||
};
|
|
||||||
ipv6 = {
|
|
||||||
address = "2a00:51c0:13:1305::61";
|
|
||||||
gateway = "2a00:51c0:13:1305::1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
|
||||||
QyNTUxOQAAACCWc7GuMI3Gzkj+mSep6MVbKDccS52jVw+nBs27yFCGVgAAAIhCymnvQspp
|
|
||||||
7wAAAAtzc2gtZWQyNTUxOQAAACCWc7GuMI3Gzkj+mSep6MVbKDccS52jVw+nBs27yFCGVg
|
|
||||||
AAAEAvr1aiy0DIjgdLH9bBq9uD4pf8Wakgqr34oWDPB2/E75Zzsa4wjcbOSP6ZJ6noxVso
|
|
||||||
NxxLnaNXD6cGzbvIUIZWAAAAAAECAwQF
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJZzsa4wjcbOSP6ZJ6noxVsoNxxLnaNXD6cGzbvIUIZW
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
fediversityVm = {
|
|
||||||
vmId = 7012;
|
|
||||||
proxmox = "fediversity";
|
|
||||||
|
|
||||||
hostPublicKey = builtins.readFile ./ssh_host_ed25519_key.pub;
|
|
||||||
unsafeHostPrivateKey = builtins.readFile ./ssh_host_ed25519_key;
|
|
||||||
|
|
||||||
domain = "abundos.eu";
|
|
||||||
ipv4 = {
|
|
||||||
address = "95.215.187.62";
|
|
||||||
gateway = "95.215.187.1";
|
|
||||||
};
|
|
||||||
ipv6 = {
|
|
||||||
address = "2a00:51c0:13:1305::62";
|
|
||||||
gateway = "2a00:51c0:13:1305::1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
|
||||||
QyNTUxOQAAACBuvrzv3i07NFxONsNP7uJmefebrBhfo0pwzmC3NCAOZwAAAIiA+nIugPpy
|
|
||||||
LgAAAAtzc2gtZWQyNTUxOQAAACBuvrzv3i07NFxONsNP7uJmefebrBhfo0pwzmC3NCAOZw
|
|
||||||
AAAEDkpXNePQeHnf4vkDkhZI/ab9Ds2igfY0a5U1p4PrEmvm6+vO/eLTs0XE42w0/u4mZ5
|
|
||||||
95usGF+jSnDOYLc0IA5nAAAAAAECAwQF
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6+vO/eLTs0XE42w0/u4mZ595usGF+jSnDOYLc0IA5n
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
fediversityVm = {
|
|
||||||
vmId = 7013;
|
|
||||||
proxmox = "fediversity";
|
|
||||||
|
|
||||||
hostPublicKey = builtins.readFile ./ssh_host_ed25519_key.pub;
|
|
||||||
unsafeHostPrivateKey = builtins.readFile ./ssh_host_ed25519_key;
|
|
||||||
|
|
||||||
domain = "abundos.eu";
|
|
||||||
ipv4 = {
|
|
||||||
address = "95.215.187.63";
|
|
||||||
gateway = "95.215.187.1";
|
|
||||||
};
|
|
||||||
ipv6 = {
|
|
||||||
address = "2a00:51c0:13:1305::63";
|
|
||||||
gateway = "2a00:51c0:13:1305::1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
|
||||||
QyNTUxOQAAACATzdyp4E+PX6lDfw2CmezguYn/lPgbpI+NUbmseEwAgwAAAIi2z3O2ts9z
|
|
||||||
tgAAAAtzc2gtZWQyNTUxOQAAACATzdyp4E+PX6lDfw2CmezguYn/lPgbpI+NUbmseEwAgw
|
|
||||||
AAAEDj2sn4VJhBL2a7j41mjdMWIdJ/u1betSxZ393lNd3+pBPN3KngT49fqUN/DYKZ7OC5
|
|
||||||
if+U+Bukj41Ruax4TACDAAAAAAECAwQF
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPN3KngT49fqUN/DYKZ7OC5if+U+Bukj41Ruax4TACD
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
fediversityVm = {
|
|
||||||
vmId = 7014;
|
|
||||||
proxmox = "fediversity";
|
|
||||||
|
|
||||||
hostPublicKey = builtins.readFile ./ssh_host_ed25519_key.pub;
|
|
||||||
unsafeHostPrivateKey = builtins.readFile ./ssh_host_ed25519_key;
|
|
||||||
|
|
||||||
domain = "abundos.eu";
|
|
||||||
ipv4 = {
|
|
||||||
address = "95.215.187.64";
|
|
||||||
gateway = "95.215.187.1";
|
|
||||||
};
|
|
||||||
ipv6 = {
|
|
||||||
address = "2a00:51c0:13:1305::64";
|
|
||||||
gateway = "2a00:51c0:13:1305::1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
|
||||||
QyNTUxOQAAACB028Q86t8RXi7617OrckxNPKNwnpGGZqhXhppHB5n9tQAAAIhfhYlCX4WJ
|
|
||||||
QgAAAAtzc2gtZWQyNTUxOQAAACB028Q86t8RXi7617OrckxNPKNwnpGGZqhXhppHB5n9tQ
|
|
||||||
AAAEAualLRodpovSzGAhza2OVvg5Yp8xv3A7xUNNbKsMTKSHTbxDzq3xFeLvrXs6tyTE08
|
|
||||||
o3CekYZmqFeGmkcHmf21AAAAAAECAwQF
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTbxDzq3xFeLvrXs6tyTE08o3CekYZmqFeGmkcHmf21
|
|
||||||
|
|
@ -81,8 +81,8 @@
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"type": "Channel",
|
"type": "Channel",
|
||||||
"name": "nixpkgs-unstable",
|
"name": "nixpkgs-unstable",
|
||||||
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.05pre777917.b7ba7f9f45c5/nixexprs.tar.xz",
|
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.05pre711046.8edf06bea5bc/nixexprs.tar.xz",
|
||||||
"hash": "0jb6b7sv66bn06pchj2l88z0i5dlz0c2vb3z6pjjlq2p8q11zigg"
|
"hash": "1mwsn0rvfm603svrq3pca4c51zlix5gkyr4gl6pxhhq3q6xs5s8y"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": 3
|
"version": 3
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
{% if deployment_succeeded %}
|
{% if deployment_status %}
|
||||||
<p>Deployment Succeeded</p>
|
<p>{{ deployment_status }}</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
{% for service_name, service_meta in services.items %}
|
{% for service, state in services.items %}
|
||||||
{% if service_meta.enable %}
|
{% if state %}
|
||||||
<li>
|
<li>
|
||||||
✓ <a target="_blank" href={{ service_meta.url }}>{{ service_name }}</a>
|
✓ {{ service }}
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% else %}
|
|
||||||
<p>Deployment Failed</p>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -103,24 +103,18 @@ class DeploymentStatus(ConfigurationForm):
|
||||||
# Check for deploy button
|
# Check for deploy button
|
||||||
if "deploy" in self.request.POST.keys():
|
if "deploy" in self.request.POST.keys():
|
||||||
deployment_result, deployment_params = self.deployment(obj)
|
deployment_result, deployment_params = self.deployment(obj)
|
||||||
deployment_succeeded = deployment_result.returncode == 0
|
if deployment_result.returncode == 0:
|
||||||
|
deployment_status = "Deployment Succeeded"
|
||||||
|
else:
|
||||||
|
deployment_status = "Deployment Failed"
|
||||||
|
|
||||||
return render(self.request, "partials/deployment_result.html", {
|
return render(self.request, "partials/deployment_result.html", {
|
||||||
"deployment_succeeded": deployment_succeeded,
|
"deployment_status": deployment_status,
|
||||||
"services": {
|
"services": {
|
||||||
"peertube": {
|
"peertube": deployment_params['peertube']['enable'],
|
||||||
"enable": deployment_params['peertube']['enable'],
|
"pixelfed": deployment_params['pixelfed']['enable'],
|
||||||
"url": f"https://peertube.{deployment_params['domain']}",
|
"mastodon": deployment_params['mastodon']['enable']
|
||||||
},
|
}
|
||||||
"pixelfed":{
|
|
||||||
"enable": deployment_params['pixelfed']['enable'],
|
|
||||||
"url": f"https://pixelfed.{deployment_params['domain']}",
|
|
||||||
},
|
|
||||||
"mastodon": {
|
|
||||||
"enable": deployment_params['mastodon']['enable'],
|
|
||||||
"url": f"https://mastodon.{deployment_params['domain']}",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
def deployment(self, obj):
|
def deployment(self, obj):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue