Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Deploying Cloudron Build and get a 404

    Solved Support
    3
    0 Votes
    3 Posts
    235 Views
    d19dotcaD

    @girish Looks good now, yeah likely just a Docker hiccup then I guess. Thanks Girish. šŸ™‚

  • Docker defaults config

    Solved Support
    3
    0 Votes
    3 Posts
    206 Views
    robiR

    That's not a docker config file with defaults šŸ˜‰

    I am looking to change various default parameters like runc, DNS, etc..

  • 2 Votes
    3 Posts
    288 Views
    LonkleL

    Gotcha, thanks for the clarification! ā˜ŗļø

  • -1 Votes
    39 Posts
    2k Views
    robiR

    My wording isn't quite correct, it's not full VMs. See below.

    https://blog.nestybox.com/2019/09/13/system-containers.html

    A Nestybox system container is an enhanced Docker container, designed to package not just applications but also low-level system software.

    What type of system software are we talking about? Currently Systemd and Docker, but in the near future software such as Kubernetes, graphical display servers, and others.

    The following figure illustrates the difference.

    But canā€™t you do this on a regular Docker container? No you canā€™t. Not properly.

    For example, in order to run Docker inside a regular container (i.e., Docker-in-Docker) you need to run the container in ā€œprivilegedā€ mode. This significantly weakens isolation between the container and the underlying host, posing a strong security risk (especially if you donā€™t trust the workloads running inside the container).

    But in some cases even privileged mode is not sufficient. For example, some system level programs read resource consumption information from the kernel (e.g., via the Linux /proc directory). In order for the program to work properly inside a container, such information must be provided relative to the resources assigned to the container itself, not the resources of the underlying host. A regular container does not do this, even when running in privileged mode.

    Nestybox system containers are designed to solve these problems.

    We can summarize the key properties of a Nestybox system container as:

    Runs low-level system workloads (as well as applications).

    Provides strong isolation from the underlying host.

    Presents a more complete abstraction of a virtual host to its workloads.

    Typically runs multiple applications within it (rather than just one app).

    One way to look at it is that a regular container packages applications. In contrast, a Nestybox system container packages virtual host environments capable of running applications as well as system-level workloads.
    See it work!

    Use Cases

    But why would you want to run such system-level software inside a container in the first place? I.e., Why do we need system containers?

    There are several use cases.

    For example, by virtue of running Docker inside the container (securely), the system container can be used for:

    CI/CD pipelines (where the need for a container to run another container arises).

    Docker sandboxing (e.g., to run multiple Docker instances with total isolation between them).

    Our blog site contains articles with practical examples of such use cases.

    In the near future, as we add support for more system-level workloads inside the system container, more use cases will open up.

    In general, if you have a need for a virtual host that runs many of the same workloads that you could run on a VM, yet is faster and more efficient, then a Nestybox system container is a good fit.

    Key Features and Benefits

    Deployment with Docker (and Kubernetes)

    This allows you to leverage the power of these amazing tools to build, deploy, and manage system containers. No need to learn new tools.

    Fast & Efficient

    Just like regular application containers.

    Strong Container Isolation

    Nestybox system containers always use the Linux user namespace.

    This means the root user in the system container has full capabilities inside the system container, but none outside of it.

    In addition, Nestybox system containers use exclusive Linux user namespace user-ID and group-ID mappings for each system container.

    If a process inside the container escapes the container sandbox, it will find itself without privileges to access resources of the host or of other containers.
    Image Flexibility

    A Nestybox system container image can be created with Docker, just like any Docker container.

    However, it typically is configured with an environment resembling a virtual host (e.g., process manager, multiple apps, docker, app containers, graphical display server, etc), although you can also configure it with a single system-level application (e.g., Docker) if you wish. Itā€™s up to you to choose whatā€™s in the image and the entry-point.
    Portability

    You can deploy Nestybox system containers on any Linux machine, whether itā€™s bare-metal, a local VM, or a cloud VM, in a data-center, your laptop, an edge device, or even an IoT device.

    And as with any Docker container you have the flexibility to move the system container around as you wish. Just upload it to your repo and deploy it on the target machine with Docker.
    Partially virtualized procfs

    In Nestybox system containers, portions of the Linux procfs (/proc) are virtualized. The goal is to make the system container more closely resemble a real host or VM. For example, the /proc/uptime file returns the containerā€™s uptime, not the underlying hostā€™s uptime.

    How does it work?

    Nestybox system containers are made possible by Sysbox, our system container runtime.

    Sysbox is software that installs on the Linux host machine, integrates with Docker (and soon Kubernetes), and works under the covers.

    Users interact with Docker to create the system container image and deploy it, just as with application containers. The difference is that this image can now include system-level software such as Docker itself (for Docker-in-Docker), etc.

    The following figure illustrates this.

    Running the system container is simple, it only requires passing the --runtime=sysbox-runc flag to Docker:

    $ docker run --runtime=sysbox-runc -it my-syscont-image

    Under the covers, Sysbox takes care of setting up the system container abstraction so that it can properly run system level workloads.

    Itā€™s easy. And you avoid the need for unsecure privileged containers or complex container configurations.

    Is it a VM?

    No, itā€™s not. Itā€™s an enhanced container. As with all containers, it uses OS-level virtualization and shares the Linux kernel with the rest of the system. In contrast, VMs use hardware-level virtualization (i.e., emulate hardware in software) and have a dedicated OS per VM.

    The following figure illustrates the differences.

    This gives system containers and VMs different properties. In particular system containers are faster, more efficient, and more portable (see above) but offer a lesser degree of isolation from the underlying host.

    From a workload perspective however, Nestybox is working to make our system containers support as many workloads as VMs can run such that they can present a viable alternative to VMs in some scenarios.

  • Strange storage usage

    Support
    7
    0 Votes
    7 Posts
    424 Views
    girishG

    @smilebasti The /home/yellowtent/appsdata is the location of apps. This size seems to roughly match the nextcloud size. As for docker, you should not use du tools inside docker's image directories since they are overlays and the du tool is not smart enough to figure out the size correctly. Try docker system df to get a better idea about the actual size docker uses (this is what is reported in the graph as ~5GB). The volumes also link into appsdata so they might be double counted the du tools.

    To take a wild guess, maybe you were backing up to the file system for some time before you moved to NAS via SMB? If this was the case, then you should remove the old backups manually from /var/backups. You can just safely nuke all the timestamped directories and the snapshot directory inside it.

  • 0 Votes
    17 Posts
    980 Views
    girishG

    @JOduMonT Yup, we are waiting for the next peertube release to make it stable (there is a bug in current release which makes it hard to finish the setup) and then start posting videos there.

  • NodeJS Server

    Moved Solved Support
    5
    1 Votes
    5 Posts
    946 Views
    girishG

    For others looking for examples, there's a bunch of custom app templates I made that should help getting started:

    https://git.cloudron.io/cloudron/tutorial-php-app/ https://git.cloudron.io/cloudron/tutorial-nodejs-app https://git.cloudron.io/cloudron/tutorial-basic https://git.cloudron.io/cloudron/tutorial-redis https://git.cloudron.io/cloudron/tutorial-supervisor-app
  • 0 Votes
    14 Posts
    2k Views
    fbartelsF

    Not to mention that if your software is closed source you do not need to publish it for all cloudron users if only you want to use it. With a bit of technical knowledge you can build apps yourself (see the link from @mehdi), push it to a private registry and then use the cloudron cli to install it yo your instance.

    I am actually hosting a few apps on my Cloudron that I am just building locally (Bitwarden for example before it was available as an official app).

    If you don't make your app official you are of course on the hook for maintaining it, but you still benefit from the user management of Cloudron, automatic ssl and backups/easy restore.

    https://simply-how.com/free-docker-container-registry lists a few hosted docker registries that offer free private repositories if you don't want to host your own.

    Edit: as long as you only need one container you could even use the Docker Hub, as it offers one private image as well.

  • Docker dependency

    Discuss
    9
    2 Votes
    9 Posts
    529 Views
    doodlemania2D

    I can attest that it is definitely NOT a good idea to add more Docker images to a CR box outside of CR. CR assumes it has full use of the box, so, anything additional you add can and possibly will break things šŸ™‚

  • 0 Votes
    5 Posts
    344 Views
    yusfY

    It proved a decent strategy given I get 50MB/s in a direct server-to-server transfer instead of caching it on my computer at a speed of 3MB/s.

  • Bookstack Installation Error

    Moved Solved BookStack
    7
    1 Votes
    7 Posts
    736 Views
    P

    @girish Only Bookstack. Yourls installed just fine.

  • Co-exist with Dokku?

    Support
    2
    2 Votes
    2 Posts
    218 Views
    girishG

    @spdustin Cloudron doesn't support running any services that are not installed via Cloudron itself. So, it won't co-exist with Dokku.

    BTW, you can build and install custom apps on Cloudron as well - https://cloudron.io/documentation/custom-apps/tutorial/ . It's very similar to developing and deploying apps on Heroku.

  • Using ZFS with Cloudron

    Solved Support
    6
    0 Votes
    6 Posts
    469 Views
    girishG

    I have added information here on how to change the graph driver using a systemd drop-in - https://cloudron.io/documentation/storage/#docker-image-location . Please use it at your own risk, since as mentioned, we haven't tested with other graph drivers.

  • 1 Votes
    5 Posts
    349 Views
    fbartelsF

    Thanks @girish!

    With the above dockerfile cloudron build now succeeds.

    I have a longer train ride on friday, maybe I can make something happen with bitwarden during it.