Investigate stuck with NixOS virtualisation (OD-2232)
Octelly opened 1 year ago

I tried to run OneDev on my NixOS home server.

virtualisation.oci-containers.containers.onedev = {
  image = "1dev/server";

  volumes = [
    "/var/run/docker.sock:/var/run/docker.sock"
    "/var/lib/onedev:/opt/onedev"
  ];

  ports = [
    "6610"
  ];

  environment = {
    hibernate_dialect = "io.onedev.server.persistence.PostgreSQLDialect";
    hibernate_connection_driver_class = "org.postgresql.Driver";
    hibernate_connection_url = "jdbc:postgresql://192.168.1.5:${builtins.toString config.services.postgresql.settings.port}/${pgsql_name}";
    hibernate_connection_username = pgsql_name;
    #password setting
  };
};

The application gets stuck here

Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: --> Wrapper Started as Console
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: Java Service Wrapper Standard Edition 64-bit 3.5.51
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:   Copyright (C) 1999-2022 Tanuki Software, Ltd. All Rights Reserved.
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:     http://wrapper.tanukisoftware.com
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:   Licensed to OneDev for Service Wrapping
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: Launching a JVM...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: WrapperManager: Initializing...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Launching application from '/app'...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Starting application...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Populating /opt/onedev...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Successfully populated /opt/onedev
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Stopping application...
Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: <-- Wrapper Stopped

Running the try it out command docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/onedev:/opt/onedev -p 6610:6610 -p 6611:6611 1dev/server on my NixOS desktop worked without problems. Log doesn't give any hints as to what could be wrong. I use the same Postgres engine for Matrix Synapse as well and that works fine.

  • Robin Shen commented 1 year ago

    Please try to start with internal db first by commenting out hibernate related envs to see if it works.

  • Octelly commented 1 year ago

    Still stuck :/ Disabled the environment variables and applied the config:

    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: --> Wrapper Started as Console
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: Java Service Wrapper Standard Edition 64-bit 3.5.51
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:   Copyright (C) 1999-2022 Tanuki Software, Ltd. All Rights Reserved.
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:     http://wrapper.tanukisoftware.com
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]:   Licensed to OneDev for Service Wrapping
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: Launching a JVM...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: WrapperManager: Initializing...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Launching application from '/app'...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Starting application...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Populating /opt/onedev...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Successfully populated /opt/onedev
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: INFO  - Stopping application...
    Dec 29 22:43:57 ocean-server docker-onedev-start[2625552]: <-- Wrapper Stopped
    Dec 30 19:18:10 ocean-server systemd[1]: Stopping docker-onedev.service...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: --> Wrapper Started as Console
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: Java Service Wrapper Standard Edition 64-bit 3.5.51
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]:   Copyright (C) 1999-2022 Tanuki Software, Ltd. All Rights Reserved.
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]:     http://wrapper.tanukisoftware.com
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]:   Licensed to OneDev for Service Wrapping
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: Launching a JVM...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: WrapperManager: Initializing...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:01 INFO  i.onedev.commons.bootstrap.Bootstrap - Launching application from '/opt/onedev'...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:02 INFO  io.onedev.commons.loader.AppLoader - Starting application...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:50 INFO  i.o.s.e.impl.DefaultProjectManager - Checking projects...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:50 INFO  i.o.s.e.i.DefaultAgentAttributeManager - Caching agent attribute info...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:51 INFO  i.o.s.e.i.DefaultBuildParamManager - Caching build param info...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:51 INFO  i.o.s.e.i.DefaultBuildMetricManager - Caching build metric info...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:52 INFO  i.o.s.e.impl.DefaultBuildManager - Caching build info...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:44:54 INFO  i.o.s.e.impl.DefaultIssueManager - Caching issue info...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 21:45:10 WARN  io.onedev.server.OneDev - Please set up the server at http://localhost:6610
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: TERM trapped.  Shutting down.
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: 18:18:11 INFO  io.onedev.commons.loader.AppLoader - Stopping application...
    Dec 30 19:18:15 ocean-server docker-onedev-start[2625552]: <-- Wrapper Stopped
    Dec 30 19:18:19 ocean-server docker-onedev-pre-stop[3346949]: onedev
    Dec 30 19:18:19 ocean-server systemd[1]: docker-onedev.service: Main process exited, code=exited, status=1/FAILURE
    Dec 30 19:18:20 ocean-server docker-onedev-post-stop[3347084]: Error response from daemon: No such container: onedev
    Dec 30 19:18:20 ocean-server systemd[1]: docker-onedev.service: Failed with result 'exit-code'.
    Dec 30 19:18:20 ocean-server systemd[1]: Stopped docker-onedev.service.
    Dec 30 19:18:20 ocean-server systemd[1]: docker-onedev.service: Consumed 8.094s CPU time, 20.8M memory peak, 3.1M read from disk.
    Dec 30 19:18:28 ocean-server systemd[1]: Starting docker-onedev.service...
    Dec 30 19:18:28 ocean-server pre-start[3347274]: Error response from daemon: No such container: onedev
    Dec 30 19:18:28 ocean-server systemd[1]: Started docker-onedev.service.
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: --> Wrapper Started as Console
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: Java Service Wrapper Standard Edition 64-bit 3.5.51
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]:   Copyright (C) 1999-2022 Tanuki Software, Ltd. All Rights Reserved.
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]:     http://wrapper.tanukisoftware.com
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]:   Licensed to OneDev for Service Wrapping
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: Launching a JVM...
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: WrapperManager: Initializing...
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: INFO  - Launching application from '/app'...
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: INFO  - Starting application...
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: INFO  - Successfully checked /opt/onedev
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: INFO  - Stopping application...
    Dec 30 19:19:31 ocean-server docker-onedev-start[3347302]: <-- Wrapper Stopped
    
  • Robin Shen commented 1 year ago

    Are you able to access OneDev via browser at this point?

  • Octelly commented 1 year ago

    Unfortunately not :/

  • Robin Shen commented 1 year ago

    Will set up a NixOS to test it out when I am free.

  • Octelly commented 1 year ago

    I'd assume it would probably work fine if I used a regular docker-compose.yml, but I'd also like to know, why it doesn't work like this. I know very little about the inner-workings of OneDev, some I'm kind of at a loss.

  • Robin Shen changed fields 1 year ago
    Name Previous Value Current Value
    Type
    Bug
    Task
  • Robin Shen changed title 1 year ago
    Previous Value Current Value
    Stuck at first wrapper stopped
    Investigate stuck with NixOS virtualisation
  • bufferUnderrun commented 3 weeks ago

    I'm running OneDev on Nixos for 4 years from now, with podman and the container is running as normal user.

    configuration.nix

        ##
        ## CONTAINERS
        ##
    
        virtualisation = {
            ## setup podman
            podman = {
                enable = true;
                dockerCompat = true;
                defaultNetwork.settings.dns_enable = true;
            };
            ## declare containers
            oci-containers = {
                ## use podman as default container engine
                backend = "podman";
            };
        };
    

    onedev.nix

    #
    # ONEDEV service
    #
    { config, pkgs, ... }:
    
    {
        users.users."onedev" = {
            isNormalUser = true;
            linger = true;
            uid = 1001;
            autoSubUidGidRange = true;
        };
    
        ## onedev vhost
        services.nginx.virtualHosts."code.domain.tld" = {
            extraConfig = ''
                access_log    /var/log/nginx/code.domain.tld.access.log;
                error_log     /var/log/nginx/code.domain.tld.error.log error;
    
                client_max_body_size 1000M;
            '';
            locations."/wicket/websocket" = {
                proxyPass = "http://localhost:6610/wicket/websocket";
                proxyWebsockets = true;
            };
            locations."/~server" = {
                proxyPass = "http://localhost:6610/~server";
                proxyWebsockets = true;
            };
            locations."/" = {
                proxyPass = "http://localhost:6610/";
            };
            forceSSL = true;
            enableACME = true;
        };
    
        ## onedev server
        systemd.user.services.onedev = {
            enable = true;
            unitConfig.ConditionUser = "onedev"; # only runnable by this user
            wantedBy = [ "default.target" ]; # if user is linger with (loginctl enable linger <user>, it will load at system start
            requires = [ "podmanworkaround.target" ]; # https://github.com/containers/podman/issues/22197#issuecomment-2564715584
            after = [ "podmanworkaround.target" ];    # https://github.com/containers/podman/issues/22197#issuecomment-2564715584
            description = "onedev container";
            path = [ "/run/wrappers" ]; # cause "pkgs.shadow" lacks of setuid see https://github.com/NixOS/nixpkgs/issues/138423
            serviceConfig = 
            let
                podmancli = "${config.virtualisation.podman.package}/bin/podman"; # --log-level=debug";
                cid = "%t/podman/%n.cid";
                podname = "onedev";
                image = "1dev/server:14.0.7";
                options = "--network pasta:--map-guest-addr,169.254.1.2 --add-host host.containers.internal:169.254.1.2 --add-host host.docker.internal:169.254.1.2 " +
                          "-p 127.0.0.1:6610:6610 " +
                          "-v onedev_data:/opt/onedev " +
                          "-v %t/podman/podman.sock:/var/run/docker.sock ";
                startpre = [ "${pkgs.coreutils-full}/bin/rm -f ${cid}" ];
                stoppost = [ "${podmancli} rm --force --ignore --volumes --cidfile=${cid}" ];
            in
            {
                ExecStartPre = startpre;
                ExecStart = "${podmancli} run " +
                            "--rm " +
                            "--replace " +
                            "--name=${podname} " +
                            "--cidfile=${cid} " +
                            "--cgroups=no-conmon " +
                            "--sdnotify=conmon " +
                            "--log-driver=journald " +
                            options +
                            "-d " +
                            "${image}";
                ExecStop = "${podmancli} stop --cidfile=${cid}";
                ExecStopPost = stoppost;
                Delegate="yes";
                Type = "notify";
                NotifyAccess = "all";
                SyslogIdentifier="%N";
                Restart = "no";
                TimeoutStopSec = 70;
            };
        };
    
    }
    

    Then, connect to your normal user "onedev" and :

    systemctl --user start onedev
    
  • Robin Shen commented 2 weeks ago

    Sorry, no resource to investigate this.

  • Robin Shen changed state to 'Closed' 2 weeks ago
    Previous Value Current Value
    Open
    Closed
issue 1/1
Type
Task
Priority
Normal
Assignee
Labels
No labels
Issue Votes (0)
Watchers (3)
Reference
OD-2232
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover