# Linux

# Homelab To Do

Given what you've been building in your homelab (BookStack, Nginx Proxy Manager, Cloudflare, Proxmox), I'd strongly recommend **Nextcloud Calendar**.

## My Recommendation: Nextcloud Calendar

Why it fits your use case:

✅ Self-hosted (LXC or Docker)  
✅ Native CalDAV support  
✅ Subscribe to external ICS feeds (AFL, F1, MotoGP, NRL, Premier League, etc.)  
✅ Excellent mobile support (iPhone and Android)  
✅ Multiple calendars with different colours  
✅ Can be exposed through NPM/Cloudflare like your other services  
✅ Easy to back up alongside your other containers

You can have:

<div id="bkmrk-calendar-source-work" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___5wvz9a0 ftgm304 f1oy3dpc fm6nont f48hbct" tabindex="0"><div class="___1dmoc29 f10pi13n ftgm304 f1enuhaj fdclmfp f1nbblvp fat0sn4 f1ov4xf1 fekwl8i f1lmfglv f1oz7aqm f1abmfm4 f1w619qj f16h0jq8"><table class="___ijttq10 f1ddd56o f16vktn6 f1ahpp82 f11qra4b f1uinfot fibjyge fvueend f9yszdx f1fu4s3n f3l3pb3 f1s2k7dp f8fmt76 fjvbh62 fysh76l fic4ptz f1yenhzu f1yn6nvh f14tj6oe f1aoyrul f1el8yx3 f1pymoxg f1ofu761 fe6itr f7coize f1794535 f70r78m f4zgifc fk1v6el f16pyhcb fo436u6 fzy4j18 fc43013 f1hmrcvb fc4t9fq fgp09rh fjnyn6r"><tbody><tr><th>Calendar</th><th>Source</th></tr><tr><td>Work</td><td>Synced from Exchange</td></tr><tr><td>AFL</td><td>ICS subscription</td></tr><tr><td>Formula 1</td><td>ICS subscription</td></tr><tr><td>Family</td><td>Manually maintained</td></tr><tr><td>Personal</td><td>Your own events</td></tr></tbody></table>

</div></div></div>All displayed in a single calendar application.

<div id="bkmrk--1" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">---

</div>## Exchange → Nextcloud Sync

Since you already mentioned **CalDavSynchronizer**, the typical setup is:

<div id="bkmrk-plain-text-exchange-" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-7653fui-FluentProviderr0 ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-0"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Exchange Online</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">CalDav Synchronizer</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Nextcloud Calendar (CalDAV)</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">iPhone Calendar App</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div><div class="scriptor-stroke scriptor-start-stroke" style="width:2px;height:17px;background-color:rgb(55,109,137);">  
</div><div class="scriptor-stroke scriptor-end-stroke" style="width:2px;height:17px;background-color:rgb(55,109,137);">  
</div></div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>CalDav Synchronizer runs on your Windows PC and mirrors your Outlook calendar into Nextcloud.

Alternative solutions include:

<div id="bkmrk-keeper.sh-%28open-sour" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">- Keeper.sh (open source) – supports Outlook, ICS and CalDAV sources. [\[github.com\]](https://github.com/ridafkih/keeper.sh), [\[keeper.sh\]](https://www.keeper.sh/)
- DAVMail – provides CalDAV connectivity for Exchange/O365. [\[sourceforge.net\]](https://sourceforge.net/directory/calendar/)

---

</div>## iPhone Access

On iOS you can simply add the Nextcloud account:

<div id="bkmrk-plain-text-settings-" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-6578fui-FluentProviderrg ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text-1"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-1"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Settings</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">→ Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">→ Accounts</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">→ Add Account</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">→ Other</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">→ Add CalDAV Account</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>Point it at:

<div id="bkmrk-plain-text-https%3A%2F%2Fc" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-971fui-FluentProviderrp ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text-2"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-2"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">https://calendar.yourdomain.com</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>(or whatever hostname you choose).

Your native Apple Calendar app will then show:

<div id="bkmrk-work-calendar-sports" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">- Work calendar
- Sports calendars
- Personal calendars

</div>all together.

<div id="bkmrk--11" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">---

</div>## Best Sources for Sports ICS Feeds

A surprisingly good new project is:

**Open Sports Cal** – provides free ICS subscriptions for:

<div id="bkmrk-afl-nba-nhl-mlb-form" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">- AFL
- NBA
- NHL
- MLB
- Formula 1
- MotoGP
- Premier League
- World Cup
- Many others. [\[github.com\]](https://github.com/vinnyab28/open-sports-cal)

</div>You simply subscribe using the ICS URL and Nextcloud refreshes automatically.

<div id="bkmrk--12" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">---

</div>## If You Want Something Lighter Than Nextcloud

### Baïkal

Very lightweight:

<div id="bkmrk-plain-text-baikal-%E2%94%9C%E2%94%80" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-9819fui-FluentProviderr12 ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text-3"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-3"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Baikal</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ├─ CalDAV</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ├─ CardDAV</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ├─ Tiny footprint</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> └─ Easy LXC deployment</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>Excellent if you only need calendars and contacts.

The downside is that it's much more basic than Nextcloud.

<div id="bkmrk--16" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;">---

</div>## What I Would Build In Your Homelab

For your current setup, I'd do:

<div id="bkmrk-plain-text-proxmox-l" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-8803fui-FluentProviderr1b ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text-4"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-4"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Proxmox LXC</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ├── Nextcloud</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │ ├── Personal Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │ ├── Work Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │ ├── AFL Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │ ├── Formula 1 Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │ └── Family Calendar</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> │</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ├── Nginx Proxy Manager</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> └── Cloudflare</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>Then:

<div id="bkmrk-plain-text-outlook-%28" style="font-family:'Segoe UI';font-size:14px;font-style:normal;font-weight:400;line-height:20px;"><div class="___77lcry0 f10pi13n"><div class="___1hewfwb f10pi13n f7oukh6 f5p0z4x" tabindex="0"><div class="fui-FluentProvider codeBlock-4542fui-FluentProviderr1k ___1jk74h0 fzk5nv6 f6n0el9 f7x6x6c f1a9mlr7 flj889f f13g0yyb ffzn0d2" dir="ltr" style="background-color:transparent;"><div class="scriptor-component-code-block NhtKn7PZLzk24rduw4FJVQ== scriptor-codeblock-virtualized" tabindex="-1"><div class="CDXiecnD7ekDByb7Z+4oEA=="><div class="r14iuplo fui-AriaLive__assertive">  
</div><div class="r14iuplo fui-AriaLive__polite">  
</div></div><div class="_47QlA7XYWbfK2INfVvTUjg=="><div class="iVmNpJv5Hu1Eu0ev0L3Ffg=="><div class="KU8Z3uOm5OU11Ica53+OVA=="><div class="fui-Overflow Ye6tJij6H1xMCTdS6F25rA== ___s5d2bt0 f3x039c facid5"><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="></div><div class="vCHKFE0-MqMN20DBXhx6Ow=="><div class="fui-Badge r1p3wql8 _9liocQIfHYrfQrOa5IZ50A== ___engtnk0 f1soahph fyk0x7v f17ad7pc f1evqen2 f70w86f fmfhf0j f1ar0y7c f1fzzbuc f176ju0o" id="bkmrk-plain-text-5"><span class="fui-Badge__icon r1tfeknu ___1paqmsi f6kb791 f1lz7yfy"></span><span class="_06mB2NPFAjhlYd1Sn6z9BQ=="><span class="XWyPutNsTr2mcr8bSFktHg==">Plain Text</span></span></div></div><div class="vCHKFE0-MqMN20DBXhx6Ow==">  
</div></div></div></div></div><div class="UkrLoQNicnNa5hsNIz3QLw== SpjJXGAclwYtfY+SokpSTg== ZF-Q2MvOY8aWSpGWW7iKRQ== anUhzybDvd7+8CBdKK7ukg=="><div class="AHKpBuU8t+rAbDNImLlOHQ== lHY5JJVFnU8S-jx-OGwJkg== IUtI8YkF5Dl2LTlcjMDTwg==" style="height:100%;width:100%;"><div class="___149cboo fssjx5q f11d9hfk fj2zk3l fmyxm6j f1ldmben f1rkeeuc" style="height:auto;"><div class="_9SVSNcn3XD8yRWLtaExq7A== ___18jbcwq fssjx5q f11d9hfk fj2zk3l f1ldmben fzdgvog f19k5jia fzv833z f1r8x5cv f1687457 fe71wc6"><div class="___ysqij10 fonrc96 f1d3un5n fdk4ulh f1cijgmw fzb3wgo fssjx5q f11d9hfk fee5icb fr1uqzy" tabindex="0"><div class="___sv9ola0 fj2zk3l f1f4vkoj scriptor-instance-5"><div class="scriptor-canvas scriptor-styled-scrollbar focus-container" contenteditable="false" style="overflow:auto;height:auto;text-align:left;"><div class="scriptor-pageContainer" contenteditable="false" style="direction:ltr;padding:12px;visibility:visible;" tabindex="0"><div class="scriptor-pageFrame scriptor-firstPage scriptor-webView scriptor-content-visibility-auto" style="background-color:transparent;height:auto;max-width:none;margin-left:auto;margin-right:auto;"><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;visibility:hidden;"><div style="visibility:visible;">  
</div></div><div class="scriptor-code-editor scriptor-code-wrap-on scriptor-pageBody scriptor-webViewPage"><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Outlook (work)</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">CalDav Synchronizer</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">Nextcloud</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline"> ↓</span>  
</div><div class="scriptor-paragraph"><span class="scriptor-textRun scriptor-inline">iPhone Calendar</span>  
</div></div><div class="scriptor-highlightWrapper" contenteditable="false" style="height:0px;">  
</div></div></div></div></div></div></div><div class="NQuKzwBfKcgN6pSHb8ZJnQ=="></div></div></div></div><div class="scriptor-code-scroll-proxy" style="display:none;"><div style="height:1px;">  
</div></div></div></div></div></div></div>That gives you a single calendar app on your phone showing work, sporting events, and personal schedules all in one place with no Microsoft dependency beyond the Exchange source.

# Fedora Setup

Windows boot missing after installing linux

- Boot to windows 11 installation media
- Shift F10

<table id="bkmrk-sudo-grub2-mkconfig-" style="border-collapse:collapse;width:100%;height:641px;"><colgroup><col style="width:62.0715%;"></col><col style="width:38.0239%;"></col></colgroup><tbody><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">diskpart</span></td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">list disk</span></td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">list vol</span></td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">select vol X</span></td><td style="height:29.8px;">select FAT32 linux boot partition</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">assign letter=S</span></td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">exit</span></td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">dir S:\\EFI</span></td><td style="height:29.8px;">verify</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">dir C:\\Windows</span></td><td style="height:29.8px;">verify</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">bcdboot C:\\Windows /s S: /f UEFI</span></td><td style="height:29.8px;">create boot files</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><span style="color:rgb(35,111,161);">dir S:\\EFI</span></td><td style="height:29.8px;">verify</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo grub2-mkconfig -o /boot/grub2/grub.cfg</td><td style="height:29.8px;">generate grub config file</td></tr><tr style="height:29.8px;"><td style="height:29.8px;"><div class="scriptor-paragraph">grep menuentry /boot/grub2/grub.cfg</div></td><td style="height:29.8px;">verify (windows should be present)</td></tr><tr style="height:63.4px;"><td style="height:63.4px;">sudo nano /etc/default/grub  
<div class="scriptor-paragraph">GRUB_TIMEOUT=10</div><div class="scriptor-paragraph">GRUB_TIMEOUT_STYLE=menu</div></td><td style="height:63.4px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo grub2-mkconfig -o /boot/grub2/grub.cfg</td><td style="height:29.8px;">regenerate grub config file

</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">bootctl status</td><td style="height:29.8px;">verify

</td></tr><tr><td>sudo nano /etc/fstab

monty.nas:/mnt/storage/media /mnt/media nfs4 \_netdev,nofail,x-systemd.automount 0 0  
monty.nas:/mnt/storage/data /mnt/data nfs4 \_netdev,nofail,x-systemd.automount 0 0

</td><td>mount NFS shares persistently

</td></tr></tbody></table>

#### Youtube in VLC

<div id="bkmrk-grep--r-codeready-%2Fe" style="direction:ltr;"><div style="direction:ltr;margin-top:0in;margin-left:0in;width:13.8256in;"><div style="direction:ltr;margin-top:0in;margin-left:0in;width:13.8256in;"><div style="direction:ltr;"><table style="direction:ltr;border-collapse:collapse;border:1pt solid rgb(163,163,163);width:63.6655%;" title=""><tbody><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">grep -r codeready /etc/

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">confirm the name for the next command

"codeready-builder-for-rhel-10-x86\_64-rpms"

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">subscription-manager repos --enable codeready-builder-for-rhel-10-x86\_64-rpms

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">enable codeready linux builder repository

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">dnf install [https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm](https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm)

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">[install EPEL](https://www.redhat.com/en/blog/install-epel-linux)

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">dnf install vlc -y

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">try installing a package

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">dnf install python3-pip -y

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">install python

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">python3 -m pip install --user yt-dlp

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">install pip via python (not yet ported from EPEL 9)

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">python3 -m yt\_dlp [https://www.youtube.com/watch?v=l7tjgm\_6LLk](https://www.youtube.com/watch?v=l7tjgm_6LLk)

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">download youtube video via yt-dlp

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">python3 -m yt\_dlp "[https://www.youtube.com/watch?v=l7tjgm\_6LLk](https://www.youtube.com/watch?v=l7tjgm_6LLk)" -o - | vlc -

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">play via vlc

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">sudo dnf install --nogpgcheck [https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm](https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-%24(rpm) -E %rhel).noarch.rpm [https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm](https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-%24(rpm) -E %rhel).noarch.rpm

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">[install rpmfusion](https://rpmfusion.org/Configuration)

</td></tr><tr><td style="vertical-align:top;width:52.2826%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">sudo dnf install -y --allowerasing ffmpeg ffmpeg-libs

</td><td style="vertical-align:top;width:47.6919%;padding:2pt 3pt;border:1pt solid rgb(163,163,163);">install ffmpeg   
\--allowerasing to overwrite old files

</td></tr></tbody></table>

</div></div></div></div>Fedora AMDGPU driver and Mesa are built into the kernel

Multimedia codecs: rpmfusion.org/Howto/Multimedia?highlight=(\\bCategoryHowto\\b)

#### XFCE

Brightness shortcuts

bash -c 'ddcutil --display 1 setvcp 10 + 25; ddcutil --display 2 setvcp 10 + 25'

bash -c 'ddcutil --display 1 setvcp 10 - 25; ddcutil --display 2 setvcp 10 - 25'

<table id="bkmrk-sudo-nano-%2Fetc%2Fx11%2Fx" style="border-collapse:collapse;width:100%;height:498.6px;"><colgroup><col style="width:50%;"></col><col style="width:50%;"></col></colgroup><tbody><tr style="height:164.2px;"><td style="height:164.2px;">sudo nano /etc/X11/xorg.conf.d/99-tearfree.conf  
section "OutputClass"  
Identifier "AMD Graphics"  
MatchDriver "amdgpu"  
Driver "amdgpu"  
Option "TearFree" "true"  
Option "AsyncFlipSecondaries" "true"  
Option "VariableRefresh" "true"  
EndSection  
</td><td style="height:164.2px;">Enable vrr, adaptive sync, and disable tearing</td></tr><tr style="height:46.6px;"><td style="height:46.6px;">xfconf-query -c xfwm4 -p /general/use\_compositing -s false</td><td style="height:46.6px;">Disable Mutter Compositor</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">  
</td><td style="height:29.8px;">Enable RPM Fusion</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo dnf upgrade --refresh</td><td style="height:29.8px;">Update</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo dnf install steam</td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo dnf install gamemode</td><td style="height:29.8px;">  
</td></tr><tr style="height:29.8px;"><td style="height:29.8px;">sudo dnf install mangohud</td><td style="height:29.8px;">  
</td></tr><tr style="height:46.6px;"><td style="height:46.6px;">mangohud gamemoderun %command%</td><td style="height:46.6px;">Steam game launch option:</td></tr><tr style="height:63.4px;"><td style="height:63.4px;">xrandr --props</td><td style="height:63.4px;">verify display settings

adaptive sync

tearing

</td></tr><tr style="height:28.8px;"><td style="height:28.8px;">sudo dnf groupupdate multimedia</td><td style="height:28.8px;">install multimedia codecs</td></tr><tr><td>sudo dnf swap ffmpeg-free ffmpeg --allowerasing</td><td>swap Fedora's trimmed-down FFmpeg with the full version</td></tr></tbody></table>

Disable display compositor via Window Manager Tweaks (may introduce input lag)

Enable Resizable BAR (SAM) On your motherboard BIOS:

Above 4G Decoding → Enabled  
Re-Size BAR Support → Enabled

<div id="bkmrk-1.-enable-third-part" style="font-family:'Google Sans', Arial, sans-serif;font-size:16px;font-weight:400;margin:0px;text-decoration:none;border-bottom:0px rgb(10,10,10);"></div><div id="bkmrk-fedora-is-notoriousl" style="font-family:'Google Sans', Arial, sans-serif;font-size:16px;font-weight:400;margin:0px;text-decoration:none;border-bottom:0px rgb(10,10,10);"></div><div class="Fsg96" id="bkmrk--6" style="font-family:'Google Sans', Arial, sans-serif;font-size:16px;font-weight:400;margin:0px;text-decoration:none;border-bottom:0px rgb(10,10,10);"></div>

# Interesting

[https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI?pli=1](https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI?pli=1)

https://en.wikipedia.org/wiki/List\_of\_Linux\_distributions