I finally got mine...weird though; I had to go into settings to turn it on. Forget where exactly, since I did that a couple days ago, but super appreciate the idea, love the thread, and happily continuing to package several more things (OpenSlides is complete, and I've resumed work on Zammad). Just for the sake of interesting trivia, I've also done a fully custom build that actually builds & deploys itself when a GH release is tagged on its repo, as well as a spike on a fully custom multi-protocol SSO tool (read IdP) intended for Cloudron-only deployment...more on that someday in the future if it lives on.
Definitely want to build the same deployment pipeline you have. And also, I look forward to hearing your SSO ideas in the future. ☺️
it's not so easy, you need to compile all the C extensions modules that you are using. For example, are not compatible libraries because there's no way to easily compile them are tensorflow, pytorch.
But in generaly Yes is compatible with all the python code because it's a fork of its default interpreter/compiler CPython.
@jasimkp expected since I never finished packaging the app fully.
So right now the zabbix app is not functional.
ps: please use code blocks for copy-pasting logs.
121795:20210614:100301.800 Starting Zabbix Server. Zabbix 5.4.1 (revision ecb5b3378c).
121795:20210614:100301.800 ****** Enabled features ******
121795:20210614:100301.800 SNMP monitoring: YES
121795:20210614:100301.800 IPMI monitoring: YES
121795:20210614:100301.800 Web monitoring: YES
121795:20210614:100301.800 VMware monitoring: YES
121795:20210614:100301.800 SMTP authentication: YES
121795:20210614:100301.800 ODBC: YES
121795:20210614:100301.800 SSH support: YES
121795:20210614:100301.800 IPv6 support: YES
121795:20210614:100301.800 TLS support: YES
121795:20210614:100301.801 using configuration file: /etc/zabbix/zabbix_server.conf
121795:20210614:100301.831 current database version (mandatory/optional): 05040000/05040000
121795:20210614:100301.831 required mandatory version: 05040000
121795:20210614:100301.864 server #0 started [main process]
121796:20210614:100301.865 server #1 started [configuration syncer #1]
121797:20210614:100301.971 server #2 started [housekeeper #1]
121798:20210614:100301.972 server #3 started [timer #1]
121799:20210614:100301.973 server #4 started [http poller #1]
121801:20210614:100301.973 server #6 started [history syncer #1]
121800:20210614:100301.974 server #5 started [discoverer #1]
121808:20210614:100301.978 server #13 started [task manager #1]
121810:20210614:100301.978 server #15 started [poller #2]
121812:20210614:100301.980 server #17 started [poller #4]
121814:20210614:100301.982 server #19 started [unreachable poller #1]
121816:20210614:100301.983 server #21 started [trapper #2]
121818:20210614:100301.984 server #23 started [trapper #4]
121819:20210614:100301.986 server #24 started [trapper #5]
121821:20210614:100301.987 server #26 started [alert manager #1]
121823:20210614:100301.987 server #28 started [alerter #2]
121824:20210614:100301.988 server #29 started [alerter #3]
121831:20210614:100301.991 server #35 started [lld worker #1]
121802:20210614:100301.992 server #7 started [history syncer #2]
121804:20210614:100301.993 server #9 started [history syncer #4]
121805:20210614:100301.993 server #10 started [escalator #1]
121806:20210614:100301.994 server #11 started [proxy poller #1]
121807:20210614:100301.994 server #12 started [self-monitoring #1]
121803:20210614:100301.994 server #8 started [history syncer #3]
121809:20210614:100301.995 server #14 started [poller #1]
121811:20210614:100301.997 server #16 started [poller #3]
121813:20210614:100301.998 server #18 started [poller #5]
121815:20210614:100301.999 server #20 started [trapper #1]
121817:20210614:100302.000 server #22 started [trapper #3]
121820:20210614:100302.001 server #25 started [icmp pinger #1]
121822:20210614:100302.001 server #27 started [alerter #1]
121825:20210614:100302.002 server #30 started [preprocessing manager #1]
121830:20210614:100302.003 server #34 started [lld manager #1]
121833:20210614:100302.003 server #36 started [lld worker #2]
121835:20210614:100302.003 server #38 started [history poller #1]
121839:20210614:100302.004 server #40 started [history poller #3]
121834:20210614:100302.008 server #37 started [alert syncer #1]
121838:20210614:100302.008 server #39 started [history poller #2]
121842:20210614:100302.010 server #41 started [history poller #4]
121843:20210614:100302.010 server #42 started [history poller #5]
121844:20210614:100302.011 server #43 started [availability manager #1]
121810:20210614:100302.475 enabling Zabbix agent checks on host "Zabbix server": interface became available
121801:20210614:100353.012 item "Zabbix server:zabbix[process,ipmi poller,avg,busy]" became not supported: No "ipmi poller" processes started.
121801:20210614:100353.012 item "Zabbix server:zabbix[process,java poller,avg,busy]" became not supported: No "java poller" processes started.
121795:20210614:100359.163 Got signal [signal:15(SIGTERM),sender_pid:123063,sender_uid:0,reason:0]. Exiting ...
121801:20210614:100359.163 syncing history data in progress...
121801:20210614:100359.166 syncing history data done
121795:20210614:100401.190 syncing trend data...
121795:20210614:100401.214 syncing trend data done
121795:20210614:100401.214 Zabbix Server stopped. Zabbix 5.4.1 (revision ecb5b3378c).
these variables can then be configured by UI ? Also, I guess you are expecting these variables to become exposed as environment variables to the app?
I like the way this is implemented in the univention app center. The format of the settings (there they use the ini format) is explained in https://docs.software-univention.de/app-provider-5.0.html#app-settings:reference. It defines different types of settings and allows to template default values (even custom drop downs). The values are then stored in a file in the container and scripts can be triggered inside and outside of the container to react on changes. Outside is probably not necessary here.
I have actually received several similar suggestions regarding the userTrack name. I thought about it for a long time, but for now I have no plans of changing it. A big reason is that when people are Googling for "user tracking" they will stumble upon userTrack, which is one of the most privacy-friendly solutions for "tracking" users (self-hosted, cookieless, hashed IPs, multiple privacy settings, etc.). This is in some way similar to getting "earthIsFlat dot com" and posting on it content that proves the earth is not flat.
Another reason why I am still using the name is because it's self-hosted, so the web administrator can actually name the user-facing scripts whatever he wants.
I agree that a more user-friendly name could help, but currently the existing brand power and SEO benefits make this change unlikely to happen.
I highly recommend looking at the EspoCRM, Wordpress, Matomo open-source, premium add-ons business-models
I have considered and tried many pricing models over the years. Working on userTrack for over 9 years I have also always watched other similar platforms and their business model and always debated whether going open-source would help or kill the project. For example, Matomo is really awesome and it's open-source, but their focus is NOT on the open-source part. Being a business, their focus is to attract users to their premium offering so their open-source version drops in quality/features (some core features are only available for the cloud plans for a very high cost).
Open-source is not free of cost for users, they pay you with their time, testing and feedback
This is true, but keep in mind that paying users also pay with their time, testing and feedback too.
Don't cut off that source of improvement, just get better at managing a public Git*** repo and issues, embrace the community spirit, and I'm sure you will have great success - including here
Doing open-source well is REALLY hard. Take Matomo for example, which is a huge organization, yet their repo has thousands of open issues and tens of unmerged Pull Requests. Although this seems like good activity, in the end I feel like it also means many human-hours of effort have been wasted trying to create, analyze, accept/reject all those suggestions. All this while the user-facing progress is overall slow and the platform starts to feel outdated.
I am not saying in any way that userTrack will never ever be open-sourced, but for my current goals with the project this is currently a no-go (working on userTrack as a shared/paid-source project for over 9 years has worked really well and most of the customers are extremely happy with the product). I want to mention that it's not about the money, it's mostly that switching userTrack to open-source would move my focus away from my envisioned end-goal for the product and self-hosting ecosystem.
I wouldn't consider anything with compiled or obfuscated code in though - and would spend 5 times the amount to have it decompiled and published
userTrack's source-code was actually entirely unobfuscated and visible up until v3 when I rewrote the entire application in TypeScript and React. Because those technologies require a building process, which means dev tools and maintaining a dev documentation, I realized that I wouldn't be able to provide a proper developer experience while focusing on improving the product. My goal now is to create an awesome product that just works, without having to fiddle with code (so the target audience also includes non-programmers).
That being said, the server side (PHP, MySQL) and tracking (JS tracker) source code of userTrack is completely visible and unobfuscated. The only obfuscated part is the JS of the interface (dashboard UI) only because changing it would require me to provide numerous extra development tools and write extensive documentation. My plan is to soon add a way to extend userTrack (eg. via plugins), so you can still customize the dashboard if you want but without having to learn and setup a complex dev environment.
Thanks again a lot for sharing your opinions, it's really useful to know how different communities have different opinions on how a product should be in order to be useful for them.
we usually find that these extensions are usually very specific and sometimes it is way more work to write a general system than just hard coding it
One of the things I recognized right away about the way you guys develop Cloudron is a laser focus on implementing practical, minimal, incremental solutions instead of chasing maximum general power right out of the gate. It leads to a more stable system that I don't have to constantly fuss over -- thank you for that! I agree that this is probably the right approach for matrix plugins as well, at least for now.
I think the way issue 569 was resolved is a good example of this.
I think it makes more sense to continue the matrix discussion on that thread, which I just replied to. Thanks for taking the time to read and respond. 🙂
Are the rest of the questions somehow related to Jupyter? I will try my best to answer them but I am missing the context. If you can give me the use case for each of the questions below, I can help further.
Is there some good way to just flag certain directories as to be preserved?
Only /app/data is preserved. Even symlinking won't work since the backup logic does not follow symlinks. So far, we are yet to encounter an app that cannot be covered with a single directory.
Can we create our own addons? How hard would that be?
addons are part of the platform. they are not hard at all, they are just docker containers with a "service" API. But they require quite a bit of work and testing. What new addon are you thinking of?
Could a modified version of "proxyAuth" let you spin up separate per-user instances of an app?
I think I understand what you are asking for. For example, there are some "single user" apps. Would be nice to somehow spin multiple instances of these "single user" apps. IMO, would be best to somehow make those apps multi-user 😉 Given most of the apps are opensource, time can be spent contributing upstream. A workaround is of course install an instance of an app for each user...
Is cross-app file sharing a thing? Something like a shared mounted drive?
See Voilumes. You can create a directory on the server and create a volume. Then this volume is mounted into any number of apps you want.
Was going through my Open VPN development log (since I'm prepping to make this all a reality in 6.1) being all nostalgic and found out when I ran into this issue, what a funny coincidence: https://forum.cloudron.io/post/16266