Skip to content

Commit 6f46dff

Browse files
committed
Added FAQ to README
1 parent 4751b9c commit 6f46dff

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

README.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
### Menu
1919

2020
- [Overview](#overview)
21+
- [FAQ](#faq)
2122
- [Features](#features)
2223
- [Roadmap](#roadmap)
2324
- [Setup](#setup)
@@ -35,6 +36,55 @@ This repo hosts the source code for OpenRun. The source for the documentation si
3536

3637
<img alt="OpenRun intro gif" src="https://openrun.dev/intro_dark_small.gif"/>
3738

39+
## FAQ
40+
41+
<details open>
42+
<summary><b>How does OpenRun compare to other deployment solutions like Coolify/Dokku etc?</b></summary>
43+
44+
> The main differences are:
45+
>
46+
> - OpenRun is declarative. After initial OpenRun setup. Instead of using CLI commands or UI operations, all operations including creating new app and updating config for existing apps can be doing by updating a config file in Git. With most other solution, app creation/update is through CLI or UI. Only app source code update can be done through Git.
47+
> - OpenRun is implemented as a web server, it does not depend on external web server like Nginx/Traefik. This simplifies end-user usage and allows OpenRun to implement features like scale down to zero (for app containers) and OAuth/SAML/Cert based auth with RBAC.
48+
> - OpenRun implements features like staged deployment and automatic dev env setup which are not available in other solutions.
49+
50+
</details>
51+
52+
<details>
53+
<summary><b>Why is declarative configuration useful?</b></summary>
54+
55+
> Imperative CLI or UI operation are easy to start with, but they make it difficult to track changes and rollback updates. With a declarative config, all changes are version controlled. It is easy to create a new environment, since everything is in Git. If multiple folks are making config changes in a team, declarative systems are easier to manage.
56+
>
57+
> Declarative configuration is what makes Kubernetes and Terraform useful. OpenRun brings declarative configuration to web app deployment. Instead of writing pages of YAML, each app is specified as a couple of lines of Starlark (python-like) config. For example, see [utils.star](https://github.com/openrundev/openrun/blob/main/examples/utils.star).
58+
59+
</details>
60+
61+
<details>
62+
<summary><b>What types of apps can be deployed with OpenRun?</b></summary>
63+
64+
> OpenRun can deploy any web app which runs in a single container. OpenRun supports [AppSpecs](https://openrun.dev/docs/container/overview/#app-specs) which allow zero-config deployment of frameworks like Streamlit/Gradio/FastHTML/NiceGUI/Shiny/Reflex based apps. For frameworks which have a AppSpec, no Dockerfile is required, no code changes are required in the app source code. For frameworks which do not have an AppSpec defined, a Dockerfile needs to be present in the app source repo.
65+
>
66+
> OpenRun does NOT support apps which require multiple containers using Docker Compose. The target use case is internal tools talking to existing API endpoints and web apps where the database is externally managed.
67+
68+
</details>
69+
70+
<details>
71+
<summary><b>Does OpenRun support deployment of internal tools by teams?</b></summary>
72+
73+
> Yes, deployment of internal tools by teams is a target [use case](https://openrun.dev/docs/use-cases/team/). Features which are built for this use case include:
74+
>
75+
> - **Declarative Config**: Manage apps by [declaratively](https://openrun.dev/docs/applications/overview/#declarative-app-management) in git, allowing team to do follow regular SDLC for config
76+
> - **OAuth/OIDC/SAML with RBAC**: Manage who can access which app using [RBAC](https://openrun.dev/docs/configuration/rbac/)
77+
> - **Audit Logs**: All operations and API calls are automatically logged in [audit trail](https://openrun.dev/docs/applications/audit/)
78+
79+
</details>
80+
81+
<details>
82+
<summary><b>How is OpenRun deployed?</b></summary>
83+
84+
> OpenRun can be deployed on a single node easily (Linux, Windows or OSX), using a SQLite database for storing metadata. Docker/Podman is the only dependency. OpenRun can be deployed across multiple machines, using an external Postgres database for storing metadata. Support for Kubernetes based deployment is being implemented. On Kubernetes, OpenRun will avoid the need to setup a build system like Jenkins, CD with ArgoCD and an IDP like BackStage.
85+
86+
</details>
87+
3888
## Features
3989

4090
OpenRun can be used to:

0 commit comments

Comments
 (0)