Greg-House commited on
Commit
9abfdf7
·
verified ·
1 Parent(s): d68d084

Update default.nix

Browse files
Files changed (1) hide show
  1. default.nix +51 -34
default.nix CHANGED
@@ -1,55 +1,68 @@
1
  { pkgs ? import <nixpkgs> {} }:
2
 
3
  let
4
- s6 = pkgs.s6-overlay;
5
-
6
- apacheCfg = ''
7
- Listen 7890
8
- <VirtualHost *:7890>
9
- DocumentRoot "/var/www/nextcloud"
10
- <Directory "/var/www/nextcloud">
11
- AllowOverride All
12
- Require all granted
13
- </Directory>
14
- </VirtualHost>
15
- '';
16
 
17
- collaboraNoSSL = ''
18
- <config>
19
- <server_name>localhost</server_name>
20
- <ssl>
21
- <enable>false</enable>
22
- </ssl>
23
- </config>
24
- '';
25
 
26
  in pkgs.dockerTools.buildImage {
27
  name = "nextcloud-collabora-nix";
28
  tag = "latest";
29
 
30
  contents = [
31
- pkgs.nextcloud
 
32
  pkgs.apacheHttpd
33
  pkgs.php
34
- pkgs.collabora-online
35
- s6
 
36
  ];
37
 
38
  extraCommands = ''
39
- # Apache config
40
- mkdir -p /etc/apache2
41
- echo "${apacheCfg}" > /etc/apache2/httpd.conf
42
-
43
- # Nextcloud directory
44
  mkdir -p /var/www/nextcloud
45
- cp -r ${pkgs.nextcloud}/. /var/www/nextcloud
46
  chown -R 33:33 /var/www/nextcloud
47
 
48
- # Collabora config
49
- mkdir -p /etc/coolwsd
50
- echo "${collaboraNoSSL}" > /etc/coolwsd/coolwsd.xml
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
- # s6 service definitions
 
 
53
  mkdir -p /etc/services.d/apache
54
  mkdir -p /etc/services.d/collabora
55
 
@@ -61,12 +74,16 @@ EOF
61
 
62
  cat > /etc/services.d/collabora/run <<EOF
63
  #!/bin/sh
64
- exec ${pkgs.collabora-online}/bin/coolwsd --disable-ssl
65
  EOF
66
  chmod +x /etc/services.d/collabora/run
67
  '';
68
 
69
  config = {
70
  Cmd = [ "/init" ];
 
 
 
 
71
  };
72
  }
 
1
  { pkgs ? import <nixpkgs> {} }:
2
 
3
  let
4
+ # Fetch Nextcloud source tarball (fixed output)
5
+ nextcloudTar = pkgs.fetchurl {
6
+ url = "https://download.nextcloud.com/server/releases/latest.tar.bz2";
7
+ sha256 = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
8
+ };
 
 
 
 
 
 
 
9
 
10
+ # Fetch Collabora CODE deb (fixed output)
11
+ collaboraDeb = pkgs.fetchurl {
12
+ url = "https://www.collaboraoffice.com/downloads/CollaboraOnline/CODE-latest/CODE-deb.tar.gz";
13
+ sha256 = "sha256-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=";
14
+ };
 
 
 
15
 
16
  in pkgs.dockerTools.buildImage {
17
  name = "nextcloud-collabora-nix";
18
  tag = "latest";
19
 
20
  contents = [
21
+ pkgs.busybox
22
+ pkgs.s6-overlay
23
  pkgs.apacheHttpd
24
  pkgs.php
25
+ pkgs.phpExtensions.curl
26
+ pkgs.phpExtensions.mbstring
27
+ pkgs.phpExtensions.zip
28
  ];
29
 
30
  extraCommands = ''
31
+ # ---------------------------
32
+ # Nextcloud install
33
+ # ---------------------------
 
 
34
  mkdir -p /var/www/nextcloud
35
+ tar -xjf ${nextcloudTar} -C /var/www
36
  chown -R 33:33 /var/www/nextcloud
37
 
38
+ # ---------------------------
39
+ # Collabora install
40
+ # ---------------------------
41
+ mkdir /tmp/code
42
+ tar -xzf ${collaboraDeb} -C /tmp/code
43
+ dpkg-deb -x /tmp/code/*.deb / # extract Collabora without installing system-wide
44
+ rm -rf /tmp/code
45
+
46
+ # disable ssl
47
+ sed -i 's/ssl.enable="true"/ssl.enable="false"/' /etc/coolwsd/coolwsd.xml
48
+
49
+ # ---------------------------
50
+ # Apache config
51
+ # ---------------------------
52
+ mkdir -p /etc/apache2
53
+ cat > /etc/apache2/httpd.conf <<EOF
54
+ Listen 7890
55
+ ServerName localhost
56
+ DocumentRoot "/var/www/nextcloud"
57
+ <Directory "/var/www/nextcloud">
58
+ AllowOverride All
59
+ Require all granted
60
+ </Directory>
61
+ EOF
62
 
63
+ # ---------------------------
64
+ # s6 services
65
+ # ---------------------------
66
  mkdir -p /etc/services.d/apache
67
  mkdir -p /etc/services.d/collabora
68
 
 
74
 
75
  cat > /etc/services.d/collabora/run <<EOF
76
  #!/bin/sh
77
+ exec /usr/bin/coolwsd --disable-ssl
78
  EOF
79
  chmod +x /etc/services.d/collabora/run
80
  '';
81
 
82
  config = {
83
  Cmd = [ "/init" ];
84
+ ExposedPorts = {
85
+ "7890/tcp" = {};
86
+ "9980/tcp" = {};
87
+ };
88
  };
89
  }