This commit is contained in:
2025-10-25 20:11:21 +02:00
commit fd37421245
700 changed files with 211892 additions and 0 deletions

View File

@@ -0,0 +1 @@
- [ ] Learn a systems language

View File

@@ -0,0 +1,10 @@
Levi 514, W34L32 ~ 95kg
@ 99kg Nudie Jeans L32W34 when new
- a little to tight around the thights
- to tight when sitting down.
- slightly to tall for a clean look. For a baggie look it is great.
@ 99kg Nudie Jeans L32W36 when new
- slightly to tight around the tights and knees but no deal breaker.
- bunging up around the waist is starting to show when wearing a belt

View File

@@ -0,0 +1,13 @@
[[Run Less Run Fast.pdf]]
<https://mzfit.app/w/youtube/watch?v=AsAYoNhdLJA>
## Alternatives for when it is Raining
Hiit via YouTube
<https://mzfit.app/w/youtube/watch?v=zcpAyFLxI0c>
## Flexability
<https://www.reddit.com/r/flexibility/wiki/starting_to_stretch/>
[[Starting to stretch.png]]
<https://youtu.be/VVPyAU4l-sw?si=pRTsSMP5xl2Du-dW>

View File

@@ -0,0 +1,52 @@
<https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension>
## Main Progression:
### [**Plank**](https://www.youtube.com/watch?v=kL_NJAkCQBg)
- Work up to a 30s hold then move on to your ring rollouts
- You're only doing the planks, don't do every drill in the video.
### [**Ring Ab Rollouts**](https://www.youtube.com/watch?v=LBUfnmugKLw)
- Elbows should stay straight
- Remain in a hollow body position (ribs down, butt tucked)
- Keep your hands as close as your overhead mobility will allow.
- Higher ring position will make this easier. Elevating the feet will make it harder.
## Alternate Progressions:
Once you've reach a 30second plank you can choose one of alternative progression if you don't want to do Ring Rollouts:
### Alternate Path 1:
#### [**Kneeling Ab Wheel Rollouts**](https://www.youtube.com/watch?v=uYBOBBv9GzY)
- Use a wall to shorten the ROM and make it easier. The further you are from the wall, the more difficult it becomes.
- Keep a hollow body position (ribs down, butt tucked), brace your core, and squeeze your glutes.
#### [**Standing Ab Wheel Rollouts**](https://www.youtube.com/watch?v=uYBOBBv9GzY)
- Use a wall to shorten the ROM and make it easier. The further you are from the wall, the more difficult it becomes.
- Keep a hollow body position (ribs down, butt tucked), brace your core, and squeeze your glutes.
### Alternate Path 2:
#### [**Tucked Hanging Leg Raises**](https://www.youtube.com/watch?v=Gw3RyyARhBQ)
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
#### **Pike Hanging Leg Raises Negative**
- Perform a Tucked Leg Raise then straighten your legs and perform a straight legged negative.
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
#### [**Straight Hanging Leg Raises**](https://www.youtube.com/watch?v=QyVq5oUBpss)
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
### Alternate Path 3:
#### [**Pike Compressions**](https://youtu.be/G1_EoDs-G7E?t=251)

View File

@@ -0,0 +1,44 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension
### Main progression:
#### [**Banded Pallof Press**](https://www.youtube.com/watch?v=AH_QZLm_0-s)
- These are performed under control with a short pause when your arms are fully extended
### Alternate progressions:
#### Alternate Path 1:
##### [**Assisted Knee Copenhagen Plank**](https://i.imgur.com/6vOLzTC.jpg)
- Lower leg should give the minimum assistance you need.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Knee Copenhagen Plank**](https://i.imgur.com/OeX4Vp8.jpg)
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Assisted Copenhagen Plank**](https://i.imgur.com/AnG77AG.jpg)
- Lower leg should give the minimum assistance you need.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Copenhagen Plank**](https://i.imgur.com/zym6TYb.jpg)
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Copenhagen Plank with Movement**](https://www.youtube.com/watch?v=1NNqUQvMYGc)
- Tuck your free leg to your chest and return to neutral under control.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
#### Alternate Path 2:
##### [**Ring Pallof Press**](https://www.youtube.com/watch?v=YSN3rqhYlKU)
- You can adjust the difficulty by altering your straddle width. Wider straddle = easier. Narrow straddler = harder.

View File

@@ -0,0 +1,73 @@
<https://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip/>
## General Form Cues
- Straight or slightly hollow body. No bending at the hips!
- Lock out the arms and depress the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)) at the top
- Go as far down as you can
- Elbows in
## Recommended Progression
### [**Parallel Bar Support Hold**](http://antranik.org/wp-content/uploads/2014/01/antranik-holding-support-hold-on-parallel-bars.jpg)
- Work up to 3 sets of 1 minute holds for this progression
- [_What if I don't have parallel bars?_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip#wiki_what_if_i_don.27t_have_parallel_bars.3F)
- If you can't hold yourself up at all, consider using bands or your feet to assist you until you gain the necessary strength.
### [**Negative Dips**](https://www.youtube.com/watch?v=T3Scqw1BbCc)
- This exercise is only the descent. To get to the starting position you can jump or use a box or anything.
- Lower yourself with control. Work up to 10 sec descents
### [**Parallel Bar Dips**](https://www.youtube.com/watch?v=2z8JmcrW-As)
- See general form cues.
### **Weighted Dips**
- See general form cues
- You can do this progression in place of ring dips.
- We recommend to add weight to parallel bar dips first instead of ring dips.
## Alternative Progression Paths:
After you reach 3x8 Parallel Bar dips, you can choose one of these paths if you don't want to do weighted dips:
### Alternate Path 1:
#### [**Ring Dips**](http://www.youtube.com/watch?v=2Vymm8nH4wM)
- **_Prerequisite:_** 3x8 PB Dips + 60sec RTO Support Hold (from [Warmup](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support))
- Starting from a support position with the rings turned out, perform a dip. It's okay if the rings turn in, just make sure you turn them out at the top.
- [_What if I don't have rings?_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip#wiki_what_if_i_don.27t_have_rings.3F)
- [_What does rings turned out/RTO mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support)
#### [**Rings RTO Dips**](https://www.youtube.com/watch?v=WGbtrkzIiOA&t=60s)
- Keep the rings turned out during the _entire_ dip. You will need to lean your body or pike your hips to compensate for the ring turn
### Alternate Path 2:
#### [**HeSPU**](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hspu)
---
## Equipment
- ## What if I don't have parallel bars?
- You can use two chairs to do dips on. Put some weight on the seats if you're afraid of them falling over. Another option is to find a counter top that makes a 90 degree angle, and do dips in that corner. You can also try to find two tables of the same height and do dips that way. Be creative!
- If you have rings, this will be MUCH harder, but if you build up to a solid RTO support hold _first_, you might be able to safely work negative ring dips. However, it's highly recommended you find a way to do parallel bar dips before moving to ring dips for increased safety.
- ## What if I don't have rings?
- Beyond parallel bar dips, there's not a whole lot of dipping you can do, except for weighted dips (which are a great exercise).
- If you don't have rings or weights, we recommend you utilize the **[handstand pushup progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/HSPU) after mastering parallel bar dips.**
## Frequently Asked Questions
### Why no [bench dips?](http://i.imgur.com/PeZdiQ8.jpg)
The movement pattern for bench dips is quite different due to different joint angles, which results in a very low carry over to real dips. Working on pushing strength in general with [the pushup progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pushup) to meet the prerequisites will accomplish the same.

View File

@@ -0,0 +1,24 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension
### Main Progression:
#### [**Reverse Hyperextension**](https://www.youtube.com/watch?v=ZeRsNzFcQLQ&)
- Keep your butt tucked
### Alternate Progression Path:
#### Alternate Path 1:
##### [**Arch Raises**](https://youtu.be/OgyqYuh41Mw?t=3m40s)
- **Only** do the lower-body raises in this video
##### [**Arch Body Hold**](https://youtu.be/OgyqYuh41Mw)
- Ok, _now_ you can do the rest of the video
##### [**Arch Body Rocks**](https://www.youtube.com/watch?v=FazlcjNXMwA)
#### Alternate Path 2:
##### [**Hyper Extension**](https://www.youtube.com/watch?v=ph3pddpKzzw)

View File

@@ -0,0 +1,112 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge/
## Recommended Progression
### [**Romanian Deadlift**](https://gfycat.com/BlueUltimateBaiji)
- Stand up straight. Brace and squeeze your butt to flatten your low back (neutral spine to maybe slightly arched).
- Send your butt back and lean your torso forward to avoid falling over
- You can place the hands on your chest and abdomen for feedback or let them hang by your sides.
_Note_: The GIF is "robotic" for demonstration purposed, your execution should be smooth.
### [**Single Legged Deadlift**](https://www.youtube.com/watch?v=iDV8r5u6En0)
- Please ignore the barbell.
- If you lack the balance to perform these with a leg in the air, you can use an arm to brace yourself against a surface or you can straddle your legs to help with balance. [Example](https://i.imgur.com/VUF6VLa.jpg)
### [**Banded Nordic Curl Negatives**](https://www.youtube.com/watch?v=HUXS3S2xSX4)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
- Do a little push-up when you reach the bottom to get back to the top and "skip" the concentric
### [**Banded Nordic Curl**](https://www.youtube.com/watch?v=HUXS3S2xSX4)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
_Note:_ Repeat these two progressions with weaker bands until you can move on
### [**Nordic Curls**](https://www.youtube.com/watch?v=d8AAPcYxPo8)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
## Alternate Progression Paths
After Single Legged Deadlifts, you can choose one of these instead of Banded Nordic Negatives:
### Alternate Path 1:
### **[Floor Slide Progressions](https://www.youtube.com/watch?v=Dlazt593cuA)**
- This exercise can bridge the gap between SLDL and Nordic Curls
- You will need a towel, socks, sliders, carpet etc. material which allows you to perform this movement smoothly.
- Keep PPT/Neutral Pelvis. Hands supporting at sides for support as needed.
- Ascend by squeezing glutes, pulling your ankles to your glutes, contracting your hamstrings.
- Descend by sliding ankles out under control.
**[Negative Hamstring Slide](https://www.youtube.com/watch?v=OY8Jci5KJdM)**
- Start in the top position of a glute bridge, slide legs out under control until your butt touches the ground/knees are extended.
- Return to starting position and repeat for desired reps.
**[Hamstring Slide](https://www.youtube.com/watch?v=Dlazt593cuA)**
- As before, but pull ankles back to glutes after eccentric movement, contracting the hamstrings and glutes.
**[Eccentric Single Leg Sliding Hamstring Slide](https://www.youtube.com/watch?v=dE5d39sErBU)**
- Similar to previous, but with 1 leg. Keep other leg raised, or rested on working leg.
**[Single Leg Sliding Hamstring Slide](https://www.youtube.com/watch?v=PzAtOaY1-Dk)**
- Similar to previous, but with 1 leg. Keep other leg raised, or rested on working leg.
**Credits: [1](https://www.reddit.com/r/bodyweightfitness/comments/gx103n/suggestion_for_rr_hinge_progression_floor_slide/),[2](https://www.reddit.com/r/bodyweightfitness/comments/gkzyrj/need_more_hamstring_work_try_singleleg_floor/)**
### Alternate Path 2:
#### [**Beginner Harop Curl**](https://www.youtube.com/watch?v=A2xRx7dGWaE)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Lower your torso by piking at the hips. Keep thighs vertical
- Ascend by squeezing your glutes and driving your ankles up into your anchor
_Note_: You need to progress these by piking your hips less as they get easier to reach the next progression.
#### [**Advanced Harop Curl**](https://www.youtube.com/watch?v=Y7ndeehIOhU)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Ascend by squeezing your glutes and driving your ankles up into your anchor
### Alternate Path 3:
#### [**Glute Ham Raise**](https://www.youtube.com/watch?v=8w6nkNnE3-M)
- Just watch the video... It has all the information you'll need to progress this way
---
# Equipment
Bands: [Recommended](https://www.performbetter.com/First-Place-Superbands). They're also available on Amazon if you search for "Perform Better Superbands". Their website has a good chart of each band's resistance, make sure to check that before you make your purchase. _Note_: You can "double up" your bands if they're big enough so you don't have to buy a 10kg resistance band and a 20kg resistance
Stick: Broom stick or PVC pipe or random stick doesn't matter. You can place this down your back during Romanian and Single Legged deadlifts to make sure you're keeping your back straight.
Barbell + Weights: If you want to progress with weighted Romanian or Single Legged Deadlifts
[u/RockRaiders](https://www.reddit.com/u/RockRaiders) made a post with different setups for nordic curls [located here](https://www.reddit.com/r/bodyweightfitness/comments/88cvqe/the_nordic_curl_the_ultimate_hamstring_bodyweight/). If you need more you can search the sub for setup threads [like this](https://www.reddit.com/r/bodyweightfitness/comments/910u5g/so_people_that_are_doing_new_rr_at_their_homes/).
# Frequently Asked Questions
## Why did you choose a banded approach to Nordic Curls?
We don't trust you to progress by manipulating leverages and staying consistent with the longer levers throughout each set so bands it is!
## How do I do the reps for single leg work?
5-8 Reps left leg, 5-8 reps right leg, then rest. Congratulations you finished a set.

View File

@@ -0,0 +1,63 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pullup/
## General Form Cues
- Body slightly [hollow](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) with straight legs throughout the whole exercise. Don't cross your legs.
- If you cannot get straight legs, it's preferable to keep the feet in front of the body rather than behind.
- Arms straight at the bottom. Don't think about anything else, just straight arms. The rest will happen automatically.
- Strive for chest to bar at the top. For this the forearms have to deviate from vertical, which may be a bit hard on the elbows, so build up to it slowly.
- Keep the neck in a neutral position: avoid craning it to get your chin over the bar
- It's natural for your legs to come forward: this keeps your centre of mass under the bar. Just make sure you're not violently swinging them upwards.
## Recommended Progression
### [**Scapular Pulls**](https://youtu.be/FgYoc4O-cio?t=1m21s)
- Elbows should stay straight
- Your back will arch more as you get stronger
- These should be performed with a pause at the "top". Squeeze your shoulders, hold it for 3-5s then release into a dead hang _under control_
- If you can't pull out of the dead hang at all, consider using bands or your feet to assist you until the gain the necessary strength.
### [**Arch Hangs**](https://youtu.be/C995b3KLXS4?t=7s)
- Elbows should stay straight
- Hold it for time/reps
- [Start at this level](https://www.youtube.com/watch?v=HoE-C85ZlCE)
- Progress towards a 90 degree in your shoulder. Like [this](https://i.ytimg.com/vi/JusddCep6PA/hqdefault.jpg)
### [**Pull-up Negatives**](https://www.youtube.com/watch?v=EkpJkHpJXmM)
- Jump to the top of the pull-up position, then **slowly** (as slowly as you can), lower yourself until your arms are straight. Build up to **10sec negatives!**
### [**Pull-ups**](https://www.youtube.com/watch?v=eGo4IYlbE5g)
- See general form cues.
### **Weighted Pull-ups**
- Like the fourth exercise in this progression, except with extra weight! [Here's](https://healthyforbetter.com/how-to-add-weight-to-pull-ups/) a list on different ways to add weight.
## Alternate Progression Path:
After you reach 3x8 Pull-Ups, you can choose one of these progressions if you don't want to do weighted Pull-Ups:
### Alternate Path 1:
#### [**L-sit Pull-ups**](https://www.youtube.com/watch?v=qeGS55RHBUU)
- Hold your legs in an [L-sit](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/l-sit) position, perform a pull-up.
### Alternate Path 2:
#### [**Arch Body Pull-ups**](https://i.imgur.com/y0k59F8.jpg)
### Alternate Path 3:
#### [**Type-Writer Pull-up**](https://youtu.be/dvd5Fyl-Ves?t=15s)
- Do a normal pullup, then pull yourself to each side at the top then descend normally. if you're doing these on rings then simply extend one arm at a time.
- Your goal is to have a completely straight arm when you go to each side
#### [**Archer Pull-ups**](https://youtu.be/vdjWgw98EeI?t=1m52s)
- Assisting arm should be straight
- You can place the assisting arm on the bar to make it easier

View File

@@ -0,0 +1,77 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pushup/
## General Form Cues
- Body in a straight line from head to toe: don't let the hips sag!
- Lock out arms and protract the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)) at the top
- Go down until chest nearly touches the ground
- Keep the elbows in, don't let them flare out
- Don't shrug up your shoulders to your ears, focus on depressing the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)).
## Recommended Progression
### [**Vertical Pushup**](https://cdn-image.realsimple.com/sites/default/files/styles/rs_medium_image/public/image/images/1005/wall-push-up_300.jpg?itok=PBzJl5oV)
- Standing next to a wall, put your hands on the wall and perform a pushup.
### [**Incline Pushup**](https://www.youtube.com/watch?v=NnfAYkBRDPY)
- Finding some raised object, put your hands on said object and perform a pushup. Lower the height to increase the difficulty.
### [**Full Pushup**](https://www.youtube.com/watch?v=IODxDxX7oi4)
- See general form cues.
### [**Diamond Pushup**](https://www.youtube.com/watch?v=J0DnG1_S92I)
- Put your hands close together so the thumbs and index fingers touch, then perform a pushup.
- If this is too difficult or feels uncomfortable, put your hands just a bit closer than in a normal pushup. Work on moving the hands closer together over time until you reach diamond pushups.
### [**Pseudo Planche Pushups**](http://www.youtube.com/watch?v=Cdmg0CfMZeo)
- Putting your hands sideways, lean forward with a straight body until your shoulders are in front of your hands. Perform a pushup while maintaining forward lean. Protract the shoulderblades at the top.
- Increase forward lean to make more difficult. Decrease forward lean to make easier. You won't run out of resistance anytime soon if you keep increasing your forward lean.
## Alternate Progression Path:
After your each 3x8 Diamond Pushups, you can choose one of these progressions if you don't want to do Pseudo Planche Pushups:
### Alternate Path 1:
#### [**Rings Pushup**](https://www.youtube.com/watch?v=vBviFvN3rHw)
- Perform a pushup on the rings. Turn out the rings at the top.
- [_What does "turning out the rings" mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)
#### [**RTO Pushup**](https://www.youtube.com/watch?v=MrlyEIpe0LI&t=2m55s)
- Starting from a plank position with the rings turned out, perform a pushup while keeping the rings turned out.
- This will feel alot like a pseudo planche pushup, but on rings.
- [**RTO PPPU**](https://www.youtube.com/watch?v=-kwe1EOiWMY)
- Starting from an RTO plank position, lean forward until your shoulders are in front of your hand. Perform a pushup while maintaining forward lean. Really protract and depress the shoulderblades at the top.
- Increase forward lean to make it more difficult. Decrease forward lean to make it easier. You won't run out of resistance anytime soon if you keep increasing your forward lean.
- [_What does "protracting the shoulderblades mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)
### Alternate Path 2:
#### [**HeSPU**](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hspu)
---
# Equipment
Nothing! Or rings...
# Frequently Asked Questions
There's nothing here! Except for the full FAQ here: [https://www.reddit.com/r/bodyweightfitness/wiki/faq](https://www.reddit.com/r/bodyweightfitness/wiki/faq)

View File

@@ -0,0 +1,40 @@
---
created: 2025-07-09 10:20
updated: 2025-07-09 10:20
---
## Warm-up: Dynamic Stretches
|Reps|Exercise|Comments|
|:--|---|--:|
|5-10|[Yuri's Shoulder Band Warmup](https://www.youtube.com/watch?v=Vwn5hSf3WEg)|Less good: [Stick dislocates](https://media.giphy.com/media/2x6ZLj05SFvHy/giphy.gif), can also be done with a tee-shirt|
|5-10|[Squat Sky Reaches](https://youtu.be/lbozu0DPcYI?t=42s)|You can do these [assisted](https://youtu.be/muF-knm3HCc).|
|10+|[GMB Wrist Prep](https://www.youtube.com/watch?v=mSZWSQSSEjE)|Do as many reps as you want|
|30s|[Deadbugs](http://www.nick-e.com/deadbug/)||
|10|[Arch Hangs](https://youtu.be/C995b3KLXS4?t=7s)|Add these after you reach Negative Pullups. Beginner attempts will look more like [this](https://www.youtube.com/watch?v=HoE-C85ZlCE)|
|30s|[Support Hold](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support)|Add these after you reach Negative Dips.|
|10|[Easier Squat progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat)|Add these after you reach Bulgarian Split Squats.|
|10|[Easier Hinge progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge)|Add these after you reach Banded Nordic Curls.|
## Strength Work
### First Pair
- 3x5-8 [[Pull-up Progression]]]
- 3x5-8 [Squat Progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat) [[Squat Progression]]
Note: If you have access to barbells (and a squat rack), we recommend you [learn how to use them instead of the squat progression.](https://www.reddit.com/r/bodyweightfitness/wiki/kb/recommended_routine#wiki_integrating_barbell_squats_and_deadlifts) after you have perfected the basic squat.
### Second Pair
- 3x5-8 [Dip progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip)
- 3x5-8 [Hinge Progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge)
Note: If you have access to barbells, we recommend you [learn how to use them instead of the hinge progression.](https://www.reddit.com/r/bodyweightfitness/wiki/kb/recommended_routine#wiki_integrating_barbell_squats_and_deadlifts) after you have perfected the basic hinge progression.
### Third Pair
- 3x5-8 [[Row Progression]]
- 3x5-8 [[Push-up Progression]]
### Core Triplet
- 3x8-12 [Anti-Extension progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_anti-extension)
- 3x8-12 [Anti-Rotation progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_anti-rotation)
- 3x8-12 [Extension progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_extension)

View File

@@ -0,0 +1,103 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/row/
# Row Progression
## General Form Cues
- Straight body
- Elbows in
- Arms straight at the bottom
- Rings/bar to chest and shoulder blades fully retracted (pinched together) at the top
- Don't let your shoulders shrug up
## Recommended Progression
### [**Vertical Rows**](https://www.youtube.com/watch?v=wr8ZA-cvH3s)
- Perform a row, but with the body position vertical.
### [**Incline Rows**](https://www.youtube.com/watch?v=LR2EnFWpVao)
- Perform a row, but with the body position somewhere between vertical and horizontal. Go closer to horizontal to make it harder.
- Don't have a low bar? [Incline rows using nothing but a bedsheet and closed door.](https://youtu.be/rloXYB8M3vU)
### [**Horizontal Rows**](https://www.youtube.com/watch?v=dvkIaarnf0g)
- See general form cues.
- [_I've got nowhere to do these!_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/row#wiki_places_to_do_rows)
### [**Wide Rows**](https://www.youtube.com/watch?v=f3yfJ0RStQw)
- It's okay to flare your elbows on this one.
- On a bar: take a wide grip (1.5 times shoulder width) and perform rows like this.
- On rings: while performing a row, bring out the elbows to the side up to a 90 degree angle.
### [**Weighted Inverted Rows**](https://www.youtube.com/watch?v=3cYR6pis5zc)
- These can be done with a weight plate on your chest/belly (uncomfortable and unreliable), or with a weight vest (minimal setup, but limited weight), or with a dip belt hanging from your waist or chest (This method can be loaded the most, however you need to elevate your entire body so that the plates don't touch the floor at the bottom). Alternatively, you can do Barbell or Dumbbell rows.
## Alternate Progression Paths:
After you reach 3x8 Wide rows you can choose one of these progressions if you don't want to do weighted rows:
### Alternate Path 1:
#### [**Tuck Front Lever**](https://youtu.be/tStwC06qdwM?t=2m50s) (3x10-30secs)
- **PRE-REQUISITE**: _Must be able to perform [skin the cat](https://www.reddit.com/r/bodyweightfitness/comments/315n76/technique_thursday_skin_the_cat_tutorial/) for 5x2, and [arching active hang](https://www.youtube.com/watch?v=C995b3KLXS4) for 3x8_. Practice Skin the Cats **after** your warmup and **before** your strength work.
- The main points here are to actively [depress and retract](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) the scapulae, as well as keeping the elbows completely straight. There should be a strong activation of the lats (the big muscles on the outsides of your back) coupled with the depression.
#### [**Tuck Front Lever Pulls**](https://youtu.be/ZWxrvwRKR-s?t=4m19s) (3x5-8)
- We advise having a solid Tuck Front Lever hold (20-30s) before moving on to the Pulls. if you can complete 3x5 rows with _good, clean form_ before you reach a 20-30s hold, feel free to do these instead.
- The main points here are to actively [depress and retract](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) the scapulae, as well as keeping the elbows completely straight. There should be a strong activation of the lats (the big muscles on the outsides of your back) coupled with the depression.
- Don't spend too much time in the inverted hang or the dead hang position, no more than a second.
- After you've ready to move on from Tuck Front Lever Pulls, repeat the last two progressions with the next progression. Advanced Tuck > Half Straddle > Straddle > Half Lay (sometimes) > Full Lay. [This](https://youtu.be/ZWxrvwRKR-s?t=3m56s) video goes over the progressions briefly. Depending on your level of flexibility you may forego the half Straddle and Half Lay progressions as they aren't that big of a difficulty jump. If you can do a narrow straddle you can probably skip half lay.
- **Note:** _The Recommended Routine programming is not designed to get you to a full [front lever](https://www.reddit.com/r/bodyweightfitness/wiki/playground/front-lever). The progression above is very simple and made to introduce you to the element. If you like it and want to achieve a full front lever we encourage you to look into more [advanced programming](https://www.reddit.com/r/bodyweightfitness/wiki/)._
### Alternate Path 2:
#### [**Archer Rows**](https://www.youtube.com/watch?v=PGoW1i4K_o0)
- See general form cues.
- Try to maintain a straight assisting arm.
- Incline Archer Rows are also a thing.
#### [**One Arm Rows**](https://www.youtube.com/watch?v=67Lp_DeX3-c)
---
# Equipment
## Places to do rows
If you have a pullup bar, pull up a chair and put your feet on that to get you some extra height. Alternatively, hang rings from your pullup bar. Another option is to [use a table to do rows](http://www.youtube.com/watch?v=OYUxXMGVuuU). [u/RockRaiders](https://www.reddit.com/u/RockRaiders) made a [post here](https://www.reddit.com/r/bodyweightfitness/comments/857cqj/no_idea_where_to_do_pullups_and_rows_here_are/) with many options.
## Rings
It's better to have rings for tuck front lever rows as they allow you to get more range of motion. However, they are not necessary and you can do them on a bar instead.
# Frequently Asked Questions
## I want to do the Tuck Front Lever path, but there is no Skin the Cat in the Recommended Routine. When do I work on them?
Practice STC after your warmup and before the strength work for a couple minutes.
## What's the difference between rows and pullups?
Rows are horizontal pulling, so they hit the muscles on the mid-upper back a bit better than pullups, which rely mostly on lats.
## I can't get my chest all the way to the bar!
Keep working on it. Really focus on bringing the shoulders blades down and back (retraction).
## Can I replace rows by pullups?
No. Rows work the mid-back much more effectively, which is important for shoulder health.

Binary file not shown.

View File

@@ -0,0 +1,23 @@
---
created: 2025-03-31 19:48
updated: 2025-09-21 21:05
---
### Zandvoort Circuit Run
I should learn how to drink and run at the same time.
So sqeesh the cup into a slot and drink with a open mouth.
I should fix my bib to my shirt at home, its much easier.
It is much easier.
Even with bad weather bring some water.
Loading up on caffeine and kratom was a good idea.
But done load up on too much caffeine. De
I should try running on an ibuprofen.
Bring water for after the run.
#running #races #ZandvoortCircuit #exercise #personal

View File

@@ -0,0 +1,90 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat/
## General Form Cues
- Stand up straight at the top
- Go as low as you can, preferably until the hips are below the knees
- Dig your big toe and heel into the ground
- Keep your knee in-line with your toes
- Don't let the knees come inward on either the descend or the ascend; think about pushing the knees out
## Recommended Progression
### [**Assisted Squat**](https://www.youtube.com/watch?v=OuR_Fp7AB0c)
Grab something in front of you and use your hands to assist in the squat. Reduce assistance over time.
### [**Squat**](https://www.youtube.com/watch?v=zJBLDJMJiDE)
See general form cues.
### [**Split Squat**](https://www.getstrong.fit/images/GobletSplitSquat.jpg)
- Pretend the dumbbell doesn't exist.
- Remain in the split stance throughout the set. Unlike a lunge, you don't return to a "feet together" stance.
### [**Bulgarian Split Squat**](https://www.youtube.com/watch?v=kkdmHTASZg8&feature=youtu.be&t=1m15s)
- Pretend the barbell doesn't exist.
- You can progress this further by elevating both your legs
### [**Beginner Shrimp Squat**](https://www.youtube.com/watch?v=TKt0-c83GSc&feature=youtu.be&t=3m9s)
- Make sure your knee and toes leave the floor at the same time
### **Intermediate Shrimp Squat**
- In this variation, the knee touches the ground but the toes **do not**.
### **Advanced Shrimp Squat**
- In this variation, you hold your heel as you descend. only the knee touches the floor.
### **Weighted Shrimp Squats**
## Alternate Progression Paths:
After you reach 3x8 Bulgarian Split Squats, you can choose one of these progressions if you don't want to do Shrimp squats:
### Alternate Path 1:
#### [**Step-ups**](https://www.youtube.com/watch?v=487aR3A7HvM)
Putting one leg up on a high object in front of you, put all of your weight on the front leg and step up to the object. Aim to minimize pushing off with the back leg. To make it harder, increase the height of the object, or hold some weight.
#### **[Deep Step-ups](https://imgur.com/Ga6RHLE.gifv)**
This is the final goal of the step-ups. **USE YOUR BACK LEG AS LITTLE AS POSSIBLE**
### Alternate Path 2:
#### [**Partial ROM Pistol Squats**](https://www.youtube.com/watch?v=0SN8ZaxOBpA)
- Increase the ROM as you get stronger
#### [**Pistol Squat**](https://youtu.be/0SN8ZaxOBpA?t=30s)
- if mobility is an issue, you can do [counterweighted pistol squats](https://gfycat.com/GrandThickAntarcticgiantpetrel) while you work on increasing your ankle mobility.
---
# Equipment
There's nothing here!
# Frequently Asked Questions
## Why Shrimp squats?
Easiest to load and lowest mobility requirement
## Isn't doing deep squats bad for your knees?
The reason some people say this is because they heard it from someone and are just blindly repeating it. Some knowledgeable people say this because the patellar tendon is in a stretched position at the bottom of a squat. However, this is not a problem if you don't have pre-existing knee problems (if you do, see a doctor): the tendon will strengthen to handle bigger and bigger loads.
## Is there anything harder than deep step-ups? They're too easy for me.
Something that is commonly overlooked is that you're supposed to reduce assistance from the backleg and increase the height of the platform you step onto over time. This will result in a deep single leg squat on a platform with your unused leg dangling behind you. If you don't have a platform that is high enough, bend your back leg at the knee so you can start from a deeper position. If this really is too easy for you, it's time to introduce weights to your leg training for further strength progress. But deep step-ups will last a long time if done correctly.
## How do the reps for deep step-ups work?
5-8 Reps left leg, 5-8 reps right leg, then rest. Congratulations you finished a set.

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 KiB

View File

@@ -0,0 +1,34 @@
## Weeks 14: Setup & Initiation
| Week | Cue | Meaning | Benefit |
| ---- | -------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| 1 | Long spine, shoulders low | Begin from an active hang with spine fully extended and shoulders depressed. | Engages lats and stabilizes shoulder girdle, preventing impingement. |
| 2 | Knuckles over, thumbs wrap | Grip the bar deep in the palm, knuckles pointing upward, thumbs wrapped. | Optimizes wrist alignment and grip strength, reducing forearm fatigue. |
| 3 | Zip ribs, squeeze glutes | Brace core by compressing ribs toward pelvis and contracting glutes. | Establishes full-body tension, minimizes swinging, maintains alignment. |
| 4 | Form Review | Film or mirror-check active hang, grip, and tension; adjust deviations. | Ensures foundations are solid before advancing mechanics. |
---
## Weeks 58: Pull Mechanics & Control
| Week | Cue | Meaning | Benefit |
|------|----------------------------|--------------------------------------------------------------------|--------------------------------------------------------------|
| 5 | Lead with elbows, not chin | Initiate the pull by driving elbows down and back rather than lifting the chin. | Emphasizes lat activation, reduces neck compensation, improves efficiency. |
| 6 | Break the bar in half | Externally rotate hands as if bending the bar outward while pulling. | Engages external rotators and lats, ensures correct elbow tracking. |
| 7 | Elbows to hips—fast! | Drive elbows toward hip pockets explosively through the concentric phase. | Promotes vertical pull path, recruits fast-twitch fibers, increases power. |
| 8 | Mechanics Review | Video-check elbow initiation, bar break, and explosive drive; correct breakdowns. | Reinforces mechanics and identifies technical flaws. |
---
## Weeks 912: Top-End Strength & Eccentric Control
| Week | Cue | Meaning | Benefit |
| ---- | ----------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| 9 | Chest meets bar, eyes forward | Pull until bar contacts upper chest, maintaining neutral head position. | Maximizes range of motion, ensures full lat contraction, aligns cervical spine. |
| 10 | 4-second descent, steel core | Lower under control for four seconds while keeping core braced. | Enhances eccentric strength, increases time under tension, reinforces core stability. |
| 11 | Squeeze and hold | Pause at top of pull-up, maintaining maximal tension for 12 seconds. | Strengthens lockout, improves proprioception, builds isometric control. |
| 12 | Final Integration | Perform pull-ups with all cues from Weeks 111; record form audit. | Assesses cumulative progress and highlights areas for continued improvement. |
---
*Implement progressive overload with added resistance or controlled variations, and allow adequate rest between sessions for optimal adaptation.*

View File

@@ -0,0 +1,24 @@
## Weeks 14: Setup & Initiation
| Week | Cue | Meaning | Benefit |
| ---- | --------------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| 1 | Plank tight, neutral spine | Form a straight line; tense abdominals, glutes squeezed. | Builds core stability, protects lumbar spine, prevents sagging. |
| 2 | Screw hands into floor | Externally rotate your hands as if “unscrewing” them, while pressing firmly into the ground. | Activates lats and serratus, locks in shoulder stability, improves force transfer. |
| 3 | Scapular protraction & retraction | At top, push thoracic spine up into “push-up plus”; at bottom, allow shoulder blades to glide together. | Engages serratus anterior & traps, improves shoulder health. |
| 4 | Form Review | Film or mirror your setup: check plank line, hand rotation tension, and scapular motion. | Confirms solid foundations before adding load or tempo. |
## Weeks 58: Push Mechanics & Control
|Week|Cue|Meaning|Benefit|
|---|---|---|---|
|5|Pack shoulders|Depress and retract your shoulder blades before you begin the descent—imagine pulling them into your back pockets.|Stabilizes the shoulder girdle, engages lats, and protects the rotator cuff.|
|6|Chest to hands|Lower until your sternum lightly touches or hovers just above your fingertips.|Ensures full range, trains depth awareness, maximizes muscle length.|
|7|Lead with chest, not head|Think of moving your chest toward the ceiling rather than jutting your chin forward.|Keeps neck neutral, prevents cervical strain, promotes trunk integrity.|
|8|Mechanics Review|Record a set: assess elbow path, chest travel, and head position; note any breakdowns.|Identifies sticking points and reinforces textbook form.|
## Weeks 912: Strength & Advanced Variations
|Week|Cue|Meaning|Benefit|
|---|---|---|---|
|9|3-second descent, explosive ascent|Lower in 3 seconds under control; at bottom, explode upward, attempting slight hand lift.|Builds eccentric strength, recruits fast-twitch fibers, boosts power.|
|10|Pause at bottom, steel core|Hold 12 seconds with chest near hands, core fully braced before pushing back up.|Trains dead-stop power, heightens proprioception, strengthens lockout.|
|11|Full lockout squeeze|At top, fully extend arms and squeeze pecs & triceps for 12 seconds before next rep.|Enhances peak contraction, improves mindmuscle connection.|
|12|Final Integration|Perform push-ups incorporating all cues from Weeks 111; film a form audit.|Tests cumulative progress; highlights areas for ongoing refinement.|

View File

@@ -0,0 +1,52 @@
<https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension>
## Main Progression:
### [**Plank**](https://www.youtube.com/watch?v=kL_NJAkCQBg)
- Work up to a 30s hold then move on to your ring rollouts
- You're only doing the planks, don't do every drill in the video.
### [**Ring Ab Rollouts**](https://www.youtube.com/watch?v=LBUfnmugKLw)
- Elbows should stay straight
- Remain in a hollow body position (ribs down, butt tucked)
- Keep your hands as close as your overhead mobility will allow.
- Higher ring position will make this easier. Elevating the feet will make it harder.
## Alternate Progressions:
Once you've reach a 30second plank you can choose one of alternative progression if you don't want to do Ring Rollouts:
### Alternate Path 1:
#### [**Kneeling Ab Wheel Rollouts**](https://www.youtube.com/watch?v=uYBOBBv9GzY)
- Use a wall to shorten the ROM and make it easier. The further you are from the wall, the more difficult it becomes.
- Keep a hollow body position (ribs down, butt tucked), brace your core, and squeeze your glutes.
#### [**Standing Ab Wheel Rollouts**](https://www.youtube.com/watch?v=uYBOBBv9GzY)
- Use a wall to shorten the ROM and make it easier. The further you are from the wall, the more difficult it becomes.
- Keep a hollow body position (ribs down, butt tucked), brace your core, and squeeze your glutes.
### Alternate Path 2:
#### [**Tucked Hanging Leg Raises**](https://www.youtube.com/watch?v=Gw3RyyARhBQ)
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
#### **Pike Hanging Leg Raises Negative**
- Perform a Tucked Leg Raise then straighten your legs and perform a straight legged negative.
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
#### [**Straight Hanging Leg Raises**](https://www.youtube.com/watch?v=QyVq5oUBpss)
- Remain in a passive hang and a hollow body position (ribs down, butt tucked)
- To minimize swinging, keep your feet infront of your hips and pause for a second at the top and bottom of the movement.
### Alternate Path 3:
#### [**Pike Compressions**](https://youtu.be/G1_EoDs-G7E?t=251)

View File

@@ -0,0 +1,44 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension
### Main progression:
#### [**Banded Pallof Press**](https://www.youtube.com/watch?v=AH_QZLm_0-s)
- These are performed under control with a short pause when your arms are fully extended
### Alternate progressions:
#### Alternate Path 1:
##### [**Assisted Knee Copenhagen Plank**](https://i.imgur.com/6vOLzTC.jpg)
- Lower leg should give the minimum assistance you need.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Knee Copenhagen Plank**](https://i.imgur.com/OeX4Vp8.jpg)
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Assisted Copenhagen Plank**](https://i.imgur.com/AnG77AG.jpg)
- Lower leg should give the minimum assistance you need.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Copenhagen Plank**](https://i.imgur.com/zym6TYb.jpg)
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
##### [**Copenhagen Plank with Movement**](https://www.youtube.com/watch?v=1NNqUQvMYGc)
- Tuck your free leg to your chest and return to neutral under control.
- Don't let the hips sag.
- Can be performed on your hand instead of elbow.
#### Alternate Path 2:
##### [**Ring Pallof Press**](https://www.youtube.com/watch?v=YSN3rqhYlKU)
- You can adjust the difficulty by altering your straddle width. Wider straddle = easier. Narrow straddler = harder.

View File

@@ -0,0 +1,73 @@
<https://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip/>
## General Form Cues
- Straight or slightly hollow body. No bending at the hips!
- Lock out the arms and depress the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)) at the top
- Go as far down as you can
- Elbows in
## Recommended Progression
### [**Parallel Bar Support Hold**](http://antranik.org/wp-content/uploads/2014/01/antranik-holding-support-hold-on-parallel-bars.jpg)
- Work up to 3 sets of 1 minute holds for this progression
- [_What if I don't have parallel bars?_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip#wiki_what_if_i_don.27t_have_parallel_bars.3F)
- If you can't hold yourself up at all, consider using bands or your feet to assist you until you gain the necessary strength.
### [**Negative Dips**](https://www.youtube.com/watch?v=T3Scqw1BbCc)
- This exercise is only the descent. To get to the starting position you can jump or use a box or anything.
- Lower yourself with control. Work up to 10 sec descents
### [**Parallel Bar Dips**](https://www.youtube.com/watch?v=2z8JmcrW-As)
- See general form cues.
### **Weighted Dips**
- See general form cues
- You can do this progression in place of ring dips.
- We recommend to add weight to parallel bar dips first instead of ring dips.
## Alternative Progression Paths:
After you reach 3x8 Parallel Bar dips, you can choose one of these paths if you don't want to do weighted dips:
### Alternate Path 1:
#### [**Ring Dips**](http://www.youtube.com/watch?v=2Vymm8nH4wM)
- **_Prerequisite:_** 3x8 PB Dips + 60sec RTO Support Hold (from [Warmup](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support))
- Starting from a support position with the rings turned out, perform a dip. It's okay if the rings turn in, just make sure you turn them out at the top.
- [_What if I don't have rings?_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip#wiki_what_if_i_don.27t_have_rings.3F)
- [_What does rings turned out/RTO mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support)
#### [**Rings RTO Dips**](https://www.youtube.com/watch?v=WGbtrkzIiOA&t=60s)
- Keep the rings turned out during the _entire_ dip. You will need to lean your body or pike your hips to compensate for the ring turn
### Alternate Path 2:
#### [**HeSPU**](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hspu)
---
## Equipment
- ## What if I don't have parallel bars?
- You can use two chairs to do dips on. Put some weight on the seats if you're afraid of them falling over. Another option is to find a counter top that makes a 90 degree angle, and do dips in that corner. You can also try to find two tables of the same height and do dips that way. Be creative!
- If you have rings, this will be MUCH harder, but if you build up to a solid RTO support hold _first_, you might be able to safely work negative ring dips. However, it's highly recommended you find a way to do parallel bar dips before moving to ring dips for increased safety.
- ## What if I don't have rings?
- Beyond parallel bar dips, there's not a whole lot of dipping you can do, except for weighted dips (which are a great exercise).
- If you don't have rings or weights, we recommend you utilize the **[handstand pushup progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/HSPU) after mastering parallel bar dips.**
## Frequently Asked Questions
### Why no [bench dips?](http://i.imgur.com/PeZdiQ8.jpg)
The movement pattern for bench dips is quite different due to different joint angles, which results in a very low carry over to real dips. Working on pushing strength in general with [the pushup progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pushup) to meet the prerequisites will accomplish the same.

View File

@@ -0,0 +1,24 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core/#wiki_anti-extension
### Main Progression:
#### [**Reverse Hyperextension**](https://www.youtube.com/watch?v=ZeRsNzFcQLQ&)
- Keep your butt tucked
### Alternate Progression Path:
#### Alternate Path 1:
##### [**Arch Raises**](https://youtu.be/OgyqYuh41Mw?t=3m40s)
- **Only** do the lower-body raises in this video
##### [**Arch Body Hold**](https://youtu.be/OgyqYuh41Mw)
- Ok, _now_ you can do the rest of the video
##### [**Arch Body Rocks**](https://www.youtube.com/watch?v=FazlcjNXMwA)
#### Alternate Path 2:
##### [**Hyper Extension**](https://www.youtube.com/watch?v=ph3pddpKzzw)

View File

@@ -0,0 +1,112 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge/
## Recommended Progression
### [**Romanian Deadlift**](https://gfycat.com/BlueUltimateBaiji)
- Stand up straight. Brace and squeeze your butt to flatten your low back (neutral spine to maybe slightly arched).
- Send your butt back and lean your torso forward to avoid falling over
- You can place the hands on your chest and abdomen for feedback or let them hang by your sides.
_Note_: The GIF is "robotic" for demonstration purposed, your execution should be smooth.
### [**Single Legged Deadlift**](https://www.youtube.com/watch?v=iDV8r5u6En0)
- Please ignore the barbell.
- If you lack the balance to perform these with a leg in the air, you can use an arm to brace yourself against a surface or you can straddle your legs to help with balance. [Example](https://i.imgur.com/VUF6VLa.jpg)
### [**Banded Nordic Curl Negatives**](https://www.youtube.com/watch?v=HUXS3S2xSX4)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
- Do a little push-up when you reach the bottom to get back to the top and "skip" the concentric
### [**Banded Nordic Curl**](https://www.youtube.com/watch?v=HUXS3S2xSX4)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
_Note:_ Repeat these two progressions with weaker bands until you can move on
### [**Nordic Curls**](https://www.youtube.com/watch?v=d8AAPcYxPo8)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Squeeze your butt to keep your hips extended
- Slowly lower your torso, avoiding piking at the hips
## Alternate Progression Paths
After Single Legged Deadlifts, you can choose one of these instead of Banded Nordic Negatives:
### Alternate Path 1:
### **[Floor Slide Progressions](https://www.youtube.com/watch?v=Dlazt593cuA)**
- This exercise can bridge the gap between SLDL and Nordic Curls
- You will need a towel, socks, sliders, carpet etc. material which allows you to perform this movement smoothly.
- Keep PPT/Neutral Pelvis. Hands supporting at sides for support as needed.
- Ascend by squeezing glutes, pulling your ankles to your glutes, contracting your hamstrings.
- Descend by sliding ankles out under control.
**[Negative Hamstring Slide](https://www.youtube.com/watch?v=OY8Jci5KJdM)**
- Start in the top position of a glute bridge, slide legs out under control until your butt touches the ground/knees are extended.
- Return to starting position and repeat for desired reps.
**[Hamstring Slide](https://www.youtube.com/watch?v=Dlazt593cuA)**
- As before, but pull ankles back to glutes after eccentric movement, contracting the hamstrings and glutes.
**[Eccentric Single Leg Sliding Hamstring Slide](https://www.youtube.com/watch?v=dE5d39sErBU)**
- Similar to previous, but with 1 leg. Keep other leg raised, or rested on working leg.
**[Single Leg Sliding Hamstring Slide](https://www.youtube.com/watch?v=PzAtOaY1-Dk)**
- Similar to previous, but with 1 leg. Keep other leg raised, or rested on working leg.
**Credits: [1](https://www.reddit.com/r/bodyweightfitness/comments/gx103n/suggestion_for_rr_hinge_progression_floor_slide/),[2](https://www.reddit.com/r/bodyweightfitness/comments/gkzyrj/need_more_hamstring_work_try_singleleg_floor/)**
### Alternate Path 2:
#### [**Beginner Harop Curl**](https://www.youtube.com/watch?v=A2xRx7dGWaE)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Lower your torso by piking at the hips. Keep thighs vertical
- Ascend by squeezing your glutes and driving your ankles up into your anchor
_Note_: You need to progress these by piking your hips less as they get easier to reach the next progression.
#### [**Advanced Harop Curl**](https://www.youtube.com/watch?v=Y7ndeehIOhU)
- Anchor your feet under something sturdy. You want to be anchored about a fist's distance away from your ankle.
- Ascend by squeezing your glutes and driving your ankles up into your anchor
### Alternate Path 3:
#### [**Glute Ham Raise**](https://www.youtube.com/watch?v=8w6nkNnE3-M)
- Just watch the video... It has all the information you'll need to progress this way
---
# Equipment
Bands: [Recommended](https://www.performbetter.com/First-Place-Superbands). They're also available on Amazon if you search for "Perform Better Superbands". Their website has a good chart of each band's resistance, make sure to check that before you make your purchase. _Note_: You can "double up" your bands if they're big enough so you don't have to buy a 10kg resistance band and a 20kg resistance
Stick: Broom stick or PVC pipe or random stick doesn't matter. You can place this down your back during Romanian and Single Legged deadlifts to make sure you're keeping your back straight.
Barbell + Weights: If you want to progress with weighted Romanian or Single Legged Deadlifts
[u/RockRaiders](https://www.reddit.com/u/RockRaiders) made a post with different setups for nordic curls [located here](https://www.reddit.com/r/bodyweightfitness/comments/88cvqe/the_nordic_curl_the_ultimate_hamstring_bodyweight/). If you need more you can search the sub for setup threads [like this](https://www.reddit.com/r/bodyweightfitness/comments/910u5g/so_people_that_are_doing_new_rr_at_their_homes/).
# Frequently Asked Questions
## Why did you choose a banded approach to Nordic Curls?
We don't trust you to progress by manipulating leverages and staying consistent with the longer levers throughout each set so bands it is!
## How do I do the reps for single leg work?
5-8 Reps left leg, 5-8 reps right leg, then rest. Congratulations you finished a set.

View File

@@ -0,0 +1,63 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pullup/
## General Form Cues
- Body slightly [hollow](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) with straight legs throughout the whole exercise. Don't cross your legs.
- If you cannot get straight legs, it's preferable to keep the feet in front of the body rather than behind.
- Arms straight at the bottom. Don't think about anything else, just straight arms. The rest will happen automatically.
- Strive for chest to bar at the top. For this the forearms have to deviate from vertical, which may be a bit hard on the elbows, so build up to it slowly.
- Keep the neck in a neutral position: avoid craning it to get your chin over the bar
- It's natural for your legs to come forward: this keeps your centre of mass under the bar. Just make sure you're not violently swinging them upwards.
## Recommended Progression
### [**Scapular Pulls**](https://youtu.be/FgYoc4O-cio?t=1m21s)
- Elbows should stay straight
- Your back will arch more as you get stronger
- These should be performed with a pause at the "top". Squeeze your shoulders, hold it for 3-5s then release into a dead hang _under control_
- If you can't pull out of the dead hang at all, consider using bands or your feet to assist you until the gain the necessary strength.
### [**Arch Hangs**](https://youtu.be/C995b3KLXS4?t=7s)
- Elbows should stay straight
- Hold it for time/reps
- [Start at this level](https://www.youtube.com/watch?v=HoE-C85ZlCE)
- Progress towards a 90 degree in your shoulder. Like [this](https://i.ytimg.com/vi/JusddCep6PA/hqdefault.jpg)
### [**Pull-up Negatives**](https://www.youtube.com/watch?v=EkpJkHpJXmM)
- Jump to the top of the pull-up position, then **slowly** (as slowly as you can), lower yourself until your arms are straight. Build up to **10sec negatives!**
### [**Pull-ups**](https://www.youtube.com/watch?v=eGo4IYlbE5g)
- See general form cues.
### **Weighted Pull-ups**
- Like the fourth exercise in this progression, except with extra weight! [Here's](https://healthyforbetter.com/how-to-add-weight-to-pull-ups/) a list on different ways to add weight.
## Alternate Progression Path:
After you reach 3x8 Pull-Ups, you can choose one of these progressions if you don't want to do weighted Pull-Ups:
### Alternate Path 1:
#### [**L-sit Pull-ups**](https://www.youtube.com/watch?v=qeGS55RHBUU)
- Hold your legs in an [L-sit](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/l-sit) position, perform a pull-up.
### Alternate Path 2:
#### [**Arch Body Pull-ups**](https://i.imgur.com/y0k59F8.jpg)
### Alternate Path 3:
#### [**Type-Writer Pull-up**](https://youtu.be/dvd5Fyl-Ves?t=15s)
- Do a normal pullup, then pull yourself to each side at the top then descend normally. if you're doing these on rings then simply extend one arm at a time.
- Your goal is to have a completely straight arm when you go to each side
#### [**Archer Pull-ups**](https://youtu.be/vdjWgw98EeI?t=1m52s)
- Assisting arm should be straight
- You can place the assisting arm on the bar to make it easier

View File

@@ -0,0 +1,77 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/pushup/
## General Form Cues
- Body in a straight line from head to toe: don't let the hips sag!
- Lock out arms and protract the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)) at the top
- Go down until chest nearly touches the ground
- Keep the elbows in, don't let them flare out
- Don't shrug up your shoulders to your ears, focus on depressing the shoulderblades ([what does that even mean?](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)).
## Recommended Progression
### [**Vertical Pushup**](https://cdn-image.realsimple.com/sites/default/files/styles/rs_medium_image/public/image/images/1005/wall-push-up_300.jpg?itok=PBzJl5oV)
- Standing next to a wall, put your hands on the wall and perform a pushup.
### [**Incline Pushup**](https://www.youtube.com/watch?v=NnfAYkBRDPY)
- Finding some raised object, put your hands on said object and perform a pushup. Lower the height to increase the difficulty.
### [**Full Pushup**](https://www.youtube.com/watch?v=IODxDxX7oi4)
- See general form cues.
### [**Diamond Pushup**](https://www.youtube.com/watch?v=J0DnG1_S92I)
- Put your hands close together so the thumbs and index fingers touch, then perform a pushup.
- If this is too difficult or feels uncomfortable, put your hands just a bit closer than in a normal pushup. Work on moving the hands closer together over time until you reach diamond pushups.
### [**Pseudo Planche Pushups**](http://www.youtube.com/watch?v=Cdmg0CfMZeo)
- Putting your hands sideways, lean forward with a straight body until your shoulders are in front of your hands. Perform a pushup while maintaining forward lean. Protract the shoulderblades at the top.
- Increase forward lean to make more difficult. Decrease forward lean to make easier. You won't run out of resistance anytime soon if you keep increasing your forward lean.
## Alternate Progression Path:
After your each 3x8 Diamond Pushups, you can choose one of these progressions if you don't want to do Pseudo Planche Pushups:
### Alternate Path 1:
#### [**Rings Pushup**](https://www.youtube.com/watch?v=vBviFvN3rHw)
- Perform a pushup on the rings. Turn out the rings at the top.
- [_What does "turning out the rings" mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)
#### [**RTO Pushup**](https://www.youtube.com/watch?v=MrlyEIpe0LI&t=2m55s)
- Starting from a plank position with the rings turned out, perform a pushup while keeping the rings turned out.
- This will feel alot like a pseudo planche pushup, but on rings.
- [**RTO PPPU**](https://www.youtube.com/watch?v=-kwe1EOiWMY)
- Starting from an RTO plank position, lean forward until your shoulders are in front of your hand. Perform a pushup while maintaining forward lean. Really protract and depress the shoulderblades at the top.
- Increase forward lean to make it more difficult. Decrease forward lean to make it easier. You won't run out of resistance anytime soon if you keep increasing your forward lean.
- [_What does "protracting the shoulderblades mean?_](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning)
### Alternate Path 2:
#### [**HeSPU**](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hspu)
---
# Equipment
Nothing! Or rings...
# Frequently Asked Questions
There's nothing here! Except for the full FAQ here: [https://www.reddit.com/r/bodyweightfitness/wiki/faq](https://www.reddit.com/r/bodyweightfitness/wiki/faq)

View File

@@ -0,0 +1,36 @@
## Warm-up: Dynamic Stretches
|Reps|Exercise|Comments|
|:--|---|--:|
|5-10|[Yuri's Shoulder Band Warmup](https://www.youtube.com/watch?v=Vwn5hSf3WEg)|Less good: [Stick dislocates](https://media.giphy.com/media/2x6ZLj05SFvHy/giphy.gif), can also be done with a tee-shirt|
|5-10|[Squat Sky Reaches](https://youtu.be/lbozu0DPcYI?t=42s)|You can do these [assisted](https://youtu.be/muF-knm3HCc).|
|10+|[GMB Wrist Prep](https://www.youtube.com/watch?v=mSZWSQSSEjE)|Do as many reps as you want|
|30s|[Deadbugs](http://www.nick-e.com/deadbug/)||
|10|[Arch Hangs](https://youtu.be/C995b3KLXS4?t=7s)|Add these after you reach Negative Pullups. Beginner attempts will look more like [this](https://www.youtube.com/watch?v=HoE-C85ZlCE)|
|30s|[Support Hold](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/support)|Add these after you reach Negative Dips.|
|10|[Easier Squat progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat)|Add these after you reach Bulgarian Split Squats.|
|10|[Easier Hinge progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge)|Add these after you reach Banded Nordic Curls.|
## Strength Work
### First Pair
- 3x5-8 [[Pull-up Progression]]]
- 3x5-8 [Squat Progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat) [[Squat Progression]]
Note: If you have access to barbells (and a squat rack), we recommend you [learn how to use them instead of the squat progression.](https://www.reddit.com/r/bodyweightfitness/wiki/kb/recommended_routine#wiki_integrating_barbell_squats_and_deadlifts) after you have perfected the basic squat.
### Second Pair
- 3x5-8 [Dip progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/dip)
- 3x5-8 [Hinge Progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/hinge)
Note: If you have access to barbells, we recommend you [learn how to use them instead of the hinge progression.](https://www.reddit.com/r/bodyweightfitness/wiki/kb/recommended_routine#wiki_integrating_barbell_squats_and_deadlifts) after you have perfected the basic hinge progression.
### Third Pair
- 3x5-8 [[Row Progression]]
- 3x5-8 [[Push-up Progression]]
### Core Triplet
- 3x8-12 [Anti-Extension progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_anti-extension)
- 3x8-12 [Anti-Rotation progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_anti-rotation)
- 3x8-12 [Extension progression](https://www.reddit.com/r/bodyweightfitness/wiki/exercises/core#wiki_extension)

View File

@@ -0,0 +1,103 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/row/
# Row Progression
## General Form Cues
- Straight body
- Elbows in
- Arms straight at the bottom
- Rings/bar to chest and shoulder blades fully retracted (pinched together) at the top
- Don't let your shoulders shrug up
## Recommended Progression
### [**Vertical Rows**](https://www.youtube.com/watch?v=wr8ZA-cvH3s)
- Perform a row, but with the body position vertical.
### [**Incline Rows**](https://www.youtube.com/watch?v=LR2EnFWpVao)
- Perform a row, but with the body position somewhere between vertical and horizontal. Go closer to horizontal to make it harder.
- Don't have a low bar? [Incline rows using nothing but a bedsheet and closed door.](https://youtu.be/rloXYB8M3vU)
### [**Horizontal Rows**](https://www.youtube.com/watch?v=dvkIaarnf0g)
- See general form cues.
- [_I've got nowhere to do these!_](http://www.reddit.com/r/bodyweightfitness/wiki/exercises/row#wiki_places_to_do_rows)
### [**Wide Rows**](https://www.youtube.com/watch?v=f3yfJ0RStQw)
- It's okay to flare your elbows on this one.
- On a bar: take a wide grip (1.5 times shoulder width) and perform rows like this.
- On rings: while performing a row, bring out the elbows to the side up to a 90 degree angle.
### [**Weighted Inverted Rows**](https://www.youtube.com/watch?v=3cYR6pis5zc)
- These can be done with a weight plate on your chest/belly (uncomfortable and unreliable), or with a weight vest (minimal setup, but limited weight), or with a dip belt hanging from your waist or chest (This method can be loaded the most, however you need to elevate your entire body so that the plates don't touch the floor at the bottom). Alternatively, you can do Barbell or Dumbbell rows.
## Alternate Progression Paths:
After you reach 3x8 Wide rows you can choose one of these progressions if you don't want to do weighted rows:
### Alternate Path 1:
#### [**Tuck Front Lever**](https://youtu.be/tStwC06qdwM?t=2m50s) (3x10-30secs)
- **PRE-REQUISITE**: _Must be able to perform [skin the cat](https://www.reddit.com/r/bodyweightfitness/comments/315n76/technique_thursday_skin_the_cat_tutorial/) for 5x2, and [arching active hang](https://www.youtube.com/watch?v=C995b3KLXS4) for 3x8_. Practice Skin the Cats **after** your warmup and **before** your strength work.
- The main points here are to actively [depress and retract](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) the scapulae, as well as keeping the elbows completely straight. There should be a strong activation of the lats (the big muscles on the outsides of your back) coupled with the depression.
#### [**Tuck Front Lever Pulls**](https://youtu.be/ZWxrvwRKR-s?t=4m19s) (3x5-8)
- We advise having a solid Tuck Front Lever hold (20-30s) before moving on to the Pulls. if you can complete 3x5 rows with _good, clean form_ before you reach a 20-30s hold, feel free to do these instead.
- The main points here are to actively [depress and retract](https://www.reddit.com/r/bodyweightfitness/wiki/kb/positioning) the scapulae, as well as keeping the elbows completely straight. There should be a strong activation of the lats (the big muscles on the outsides of your back) coupled with the depression.
- Don't spend too much time in the inverted hang or the dead hang position, no more than a second.
- After you've ready to move on from Tuck Front Lever Pulls, repeat the last two progressions with the next progression. Advanced Tuck > Half Straddle > Straddle > Half Lay (sometimes) > Full Lay. [This](https://youtu.be/ZWxrvwRKR-s?t=3m56s) video goes over the progressions briefly. Depending on your level of flexibility you may forego the half Straddle and Half Lay progressions as they aren't that big of a difficulty jump. If you can do a narrow straddle you can probably skip half lay.
- **Note:** _The Recommended Routine programming is not designed to get you to a full [front lever](https://www.reddit.com/r/bodyweightfitness/wiki/playground/front-lever). The progression above is very simple and made to introduce you to the element. If you like it and want to achieve a full front lever we encourage you to look into more [advanced programming](https://www.reddit.com/r/bodyweightfitness/wiki/)._
### Alternate Path 2:
#### [**Archer Rows**](https://www.youtube.com/watch?v=PGoW1i4K_o0)
- See general form cues.
- Try to maintain a straight assisting arm.
- Incline Archer Rows are also a thing.
#### [**One Arm Rows**](https://www.youtube.com/watch?v=67Lp_DeX3-c)
---
# Equipment
## Places to do rows
If you have a pullup bar, pull up a chair and put your feet on that to get you some extra height. Alternatively, hang rings from your pullup bar. Another option is to [use a table to do rows](http://www.youtube.com/watch?v=OYUxXMGVuuU). [u/RockRaiders](https://www.reddit.com/u/RockRaiders) made a [post here](https://www.reddit.com/r/bodyweightfitness/comments/857cqj/no_idea_where_to_do_pullups_and_rows_here_are/) with many options.
## Rings
It's better to have rings for tuck front lever rows as they allow you to get more range of motion. However, they are not necessary and you can do them on a bar instead.
# Frequently Asked Questions
## I want to do the Tuck Front Lever path, but there is no Skin the Cat in the Recommended Routine. When do I work on them?
Practice STC after your warmup and before the strength work for a couple minutes.
## What's the difference between rows and pullups?
Rows are horizontal pulling, so they hit the muscles on the mid-upper back a bit better than pullups, which rely mostly on lats.
## I can't get my chest all the way to the bar!
Keep working on it. Really focus on bringing the shoulders blades down and back (retraction).
## Can I replace rows by pullups?
No. Rows work the mid-back much more effectively, which is important for shoulder health.

View File

@@ -0,0 +1,90 @@
https://www.reddit.com/r/bodyweightfitness/wiki/exercises/squat/
## General Form Cues
- Stand up straight at the top
- Go as low as you can, preferably until the hips are below the knees
- Dig your big toe and heel into the ground
- Keep your knee in-line with your toes
- Don't let the knees come inward on either the descend or the ascend; think about pushing the knees out
## Recommended Progression
### [**Assisted Squat**](https://www.youtube.com/watch?v=OuR_Fp7AB0c)
Grab something in front of you and use your hands to assist in the squat. Reduce assistance over time.
### [**Squat**](https://www.youtube.com/watch?v=zJBLDJMJiDE)
See general form cues.
### [**Split Squat**](https://www.getstrong.fit/images/GobletSplitSquat.jpg)
- Pretend the dumbbell doesn't exist.
- Remain in the split stance throughout the set. Unlike a lunge, you don't return to a "feet together" stance.
### [**Bulgarian Split Squat**](https://www.youtube.com/watch?v=kkdmHTASZg8&feature=youtu.be&t=1m15s)
- Pretend the barbell doesn't exist.
- You can progress this further by elevating both your legs
### [**Beginner Shrimp Squat**](https://www.youtube.com/watch?v=TKt0-c83GSc&feature=youtu.be&t=3m9s)
- Make sure your knee and toes leave the floor at the same time
### **Intermediate Shrimp Squat**
- In this variation, the knee touches the ground but the toes **do not**.
### **Advanced Shrimp Squat**
- In this variation, you hold your heel as you descend. only the knee touches the floor.
### **Weighted Shrimp Squats**
## Alternate Progression Paths:
After you reach 3x8 Bulgarian Split Squats, you can choose one of these progressions if you don't want to do Shrimp squats:
### Alternate Path 1:
#### [**Step-ups**](https://www.youtube.com/watch?v=487aR3A7HvM)
Putting one leg up on a high object in front of you, put all of your weight on the front leg and step up to the object. Aim to minimize pushing off with the back leg. To make it harder, increase the height of the object, or hold some weight.
#### **[Deep Step-ups](https://imgur.com/Ga6RHLE.gifv)**
This is the final goal of the step-ups. **USE YOUR BACK LEG AS LITTLE AS POSSIBLE**
### Alternate Path 2:
#### [**Partial ROM Pistol Squats**](https://www.youtube.com/watch?v=0SN8ZaxOBpA)
- Increase the ROM as you get stronger
#### [**Pistol Squat**](https://youtu.be/0SN8ZaxOBpA?t=30s)
- if mobility is an issue, you can do [counterweighted pistol squats](https://gfycat.com/GrandThickAntarcticgiantpetrel) while you work on increasing your ankle mobility.
---
# Equipment
There's nothing here!
# Frequently Asked Questions
## Why Shrimp squats?
Easiest to load and lowest mobility requirement
## Isn't doing deep squats bad for your knees?
The reason some people say this is because they heard it from someone and are just blindly repeating it. Some knowledgeable people say this because the patellar tendon is in a stretched position at the bottom of a squat. However, this is not a problem if you don't have pre-existing knee problems (if you do, see a doctor): the tendon will strengthen to handle bigger and bigger loads.
## Is there anything harder than deep step-ups? They're too easy for me.
Something that is commonly overlooked is that you're supposed to reduce assistance from the backleg and increase the height of the platform you step onto over time. This will result in a deep single leg squat on a platform with your unused leg dangling behind you. If you don't have a platform that is high enough, bend your back leg at the knee so you can start from a deeper position. If this really is too easy for you, it's time to introduce weights to your leg training for further strength progress. But deep step-ups will last a long time if done correctly.
## How do the reps for deep step-ups work?
5-8 Reps left leg, 5-8 reps right leg, then rest. Congratulations you finished a set.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

View File

@@ -0,0 +1,18 @@
- Orzo
- Union
-
- Spinach a la creme
- Cherry Tomato
- Mushrooms
- Parmaza
- Bouilion
- Walnuts
- butter beans
## Extra Protein
Add walnuts or pine nuts or butter beans
<https://thehiddenveggies.com/vegan-orzo/?utm_source=perplexity>
<https://plantbaes.com/high-protein-marry-me-orzo/?utm_source=perplexity>

View File

@@ -0,0 +1,16 @@
---
created: 2025-06-22 15:11
updated: 2025-06-27 19:40
---
### Papers
Her first paper
[[Contemporary guideline-directed medical therapy in de novo, chronic, and worsening heart failure patients First data from the TITRATE-HF study.pdf]]
ARNI is under subscripbt and is also the most expensive. or newest?
For the MRAs, I thought that not everyone is sensitive to salt in the contaxt of blood pressure.
Why the diuretics in figure 1?most played with? why?
Is it normal to have this meny authers and to hype your own study?
[[Newly diagnosed heart failure with reduced ejection fraction timing, sequencing, and titration of guideline-recommended medical therapy.pdf]]

View File

@@ -0,0 +1,20 @@
- [x] Spec Ops the line
- [ ] Balders gate ⏫⛔ 70 -100
- [ ] NieR: Automata ⏫ 21-37
- [x] Depression Quest
- [ ] The Alters 17 - 21
- [ ] Elden ring 🆔 35kg6r ⏫ 60 - 100
- [ ] The Blood of Dawnwalker
- [ ] Lies of P, 29 - 36
- [ ] Subnautica
- [ ] BioShock Infinite, 11 - 16
- [ ] Persona 5 Royal
- [ ] Stellar blade 🔽 21 - 36
- [ ] Cyberpunk 2077 ⏫ 26-62
- [ ] Disco Alyssum
- [ ] GTA 5 🔽
- [ ] Black Myth: Wukong
- [ ] Dark Souls 3⛔ 35kg6r
- [ ] Doom, 11 - 16
- [ ] Control, 13 - 25
- [x] The Witcher 3: Wild Hunt, 51 - 103

View File

@@ -0,0 +1 @@
Tijgertje

View File

@@ -0,0 +1 @@
- Een bouw trapje

View File

@@ -0,0 +1,164 @@
Before selecting a system, understand the main types available—split, multi-split, ducted, VRF/VRV, portable, and window units—which differ in installation, cost, and performance [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com). Accurately sizing your unit through a cooling load calculation based on room volume, insulation, solar gain, and occupancy is essential to ensure comfort and efficiency [theengineeringmindset.com](https://theengineeringmindset.com/cooling-load-calculation-cold-room/?utm_source=chatgpt.com). Under the EU Ecodesign Directive, choosing a unit with high SEER and SCOP ratings and a favorable energy label (A+++ to D) can reduce operating costs and environmental impact [eurovent-certification.com](https://www.eurovent-certification.com/en/category/article/understanding-seer-and-scop?universe=energy-efficiency&utm_source=chatgpt.com)[energy-efficient-products.ec.europa.eu](https://energy-efficient-products.ec.europa.eu/product-list/air-conditioners-and-comfort-fans_en?utm_source=chatgpt.com). Compliance with local regulations in the Netherlands—VvE approval for façade modifications and, in some cases, municipal environmental or building permits—must be secured before installation [vve.nl](https://www.vve.nl/kennisbank/algemeen/het-plaatsen-van-airconditioning-in-een-vve/?utm_source=chatgpt.com)[aircobrabant.nl](https://www.aircobrabant.nl/en/government-rules-on-air-conditioning-installation/?utm_source=chatgpt.com). The EU F-Gas Regulation phases down high-GWP refrigerants through 2030, making R32 or lower-GWP alternatives preferable [danfoss.com](https://www.danfoss.com/en/about-danfoss/our-businesses/cooling/refrigerants-and-energy-efficiency/hfc-phase-down/danfoss-on-f-gas-regulation/?utm_source=chatgpt.com)[climate.ec.europa.eu](https://climate.ec.europa.eu/eu-action/fluorinated-greenhouse-gases/f-gas-legislation_en?utm_source=chatgpt.com). Plan for proper electrical supply—a dedicated 220-240 V circuit with appropriate amperage—and structural support for indoor and outdoor units [mertsheating.com](https://www.mertsheating.com/hvac/do-air-conditioners-need-dedicated-circuit/?utm_source=chatgpt.com). Noise performance varies widely: mini-splits can be as quiet as 19 dB, while central systems may reach 70 dB; consider both indoor and outdoor levels for neighbor comfort and legal limits [daikin-ce.com](https://www.daikin-ce.com/en_us/daikin-blog/what-do-air-conditioner-noise-ratings-mean.html?utm_source=chatgpt.com)[trueblueac.com](https://www.trueblueac.com/blog/what-are-the-noise-levels-of-modern-air-conditioners/?utm_source=chatgpt.com). Establish a maintenance schedule—filter cleaning quarterly, biannual professional servicing for refrigerant checks and coil cleaning—to maximize lifespan and performance [servicechannel.com](https://servicechannel.com/blog/air-filter-maintenance-checklist/?utm_source=chatgpt.com)[servicechampions.net](https://www.servicechampions.net/blog/whats-included-professional-ac-maintenance?utm_source=chatgpt.com). Budget for purchase (€1,6003,250 for split units), installation (€3,0005,550 for multi-split), and running costs (at €0.27/kWh, a 3 kW unit uses ~€6.48 per 8 h of operation) [zoofy.nl](https://zoofy.nl/en/price-guides/costs-of-installing-an-ac/?utm_source=chatgpt.com)[countryeconomy.com](https://countryeconomy.com/energy-and-environment/electricity-price-household/netherlands?utm_source=chatgpt.com). Finally, smart features—Wi-Fi control, app scheduling, voice assistant integration, and geofencing—can enhance convenience and energy savings [theverge.com](https://www.theverge.com/tech/693622/hisense-window-air-conditioner-btuwc08w25a-sony-ult-field-1-speaker-deal-sale?utm_source=chatgpt.com)[lg.com](https://www.lg.com/au/air-conditioning/smart-air-conditioner-features-and-benefits-everything-you-need-to-know/?utm_source=chatgpt.com).
---
## 1. Types of Air Conditioning Systems
### 1.1 Split and Multi-Split Systems
- **Split systems** consist of one outdoor compressor/condenser and one indoor air-handling unit, ideal for single rooms or zones [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
- **Multi-split systems** connect multiple indoor units to a single outdoor unit, offering individualized control for 25 rooms but with higher installation costs [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
### 1.2 Ducted Central Systems
- Employ a network of ducts to distribute conditioned air throughout the maisonette, maintaining aesthetics by hiding units above ceilings or in walls [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
- Best for whole-home solutions but require sufficient ceiling void space and more complex duct design [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
### 1.3 VRF/VRV Systems
- **Variable Refrigerant Flow (VRF)** systems modulate refrigerant flow to each indoor unit for precise control and high efficiency [lg.com](https://www.lg.com/global/business/hvac/commercial-solutions/vrf-system?utm_source=chatgpt.com).
- Scalable for multiple zones, VRF is suited to larger or multi-level maisonettes but entails higher initial investment [lg.com](https://www.lg.com/global/business/hvac/commercial-solutions/vrf-system?utm_source=chatgpt.com).
### 1.4 Portable and Window Units
- **Portable ACs** require minimal installation—just a window exhaust hose—but are less efficient and noisier [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
- **Window units** mount directly into a window opening, offering cost-effective room cooling but visible from outside and often requiring permits [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
---
## 2. Sizing and Cooling Load Calculation
- Perform a **cooling load calculation** considering external heat gains (walls, windows, roof) and internal gains (occupants, appliances) to determine required capacity in kW or BTU/h [theengineeringmindset.com](https://theengineeringmindset.com/cooling-load-calculation-cold-room/?utm_source=chatgpt.com).
- As a rule of thumb, 1 ton of cooling equals 12,000 BTU/h or 3.516 kW; many guidelines suggest 100 W/m² for well-insulated spaces, adjusting for sun exposure and occupancy [cedengineering.com](https://www.cedengineering.com/userfiles/M06-004%20-%20Cooling%20Load%20Calculations%20and%20Principles%20-%20US.pdf?utm_source=chatgpt.com).
- Inaccurate sizing leads to short-cycling (oversized) or insufficient cooling (undersized), both reducing comfort and efficiency [theengineeringmindset.com](https://theengineeringmindset.com/cooling-load-calculation-cold-room/?utm_source=chatgpt.com).
---
## 3. Energy Efficiency and Operating Costs
- **SEER (Seasonal Energy Efficiency Ratio)** and **SCOP (Seasonal Coefficient of Performance)** are standardized EU metrics: higher values indicate lower energy use [eurovent-certification.com](https://www.eurovent-certification.com/en/category/article/understanding-seer-and-scop?universe=energy-efficiency&utm_source=chatgpt.com).
- EU energy label (A+++ to D) also displays annual energy consumption and sound levels, helping compare models under the Ecodesign Directive [energy-efficient-products.ec.europa.eu](https://energy-efficient-products.ec.europa.eu/product-list/air-conditioners-and-comfort-fans_en?utm_source=chatgpt.com).
- With Dutch household electricity at €0.27/kWh (June 2024), a 3 kW unit running 8 h/day costs ~€6.48 daily (3 kW × 8 h × €0.27) [countryeconomy.com](https://countryeconomy.com/energy-and-environment/electricity-price-household/netherlands?utm_source=chatgpt.com).
---
## 4. Regulatory Compliance and Permits
### 4.1 VvE Approval
- Owners must consult their **Vereniging van Eigenaars (VvE)** rules; façade alterations (drilling for pipes) nearly always require VvE consent [vve.nl](https://www.vve.nl/kennisbank/algemeen/het-plaatsen-van-airconditioning-in-een-vve/?utm_source=chatgpt.com).
- New noise limits (April 2021): outdoor units may not exceed 45 dB by day and 40 dB at night at neighboring façades, with tonal penalties [vvebelang.nl](https://www.vvebelang.nl/kennisbank/bouwkundig/airco/?utm_source=chatgpt.com).
### 4.2 Municipal Permits
- Exterior installations visible from public roads or in protected zones often need an **environmental or building permit**; rear/side wall installations may be permit-free if not publicly visible [aircobrabant.nl](https://www.aircobrabant.nl/en/government-rules-on-air-conditioning-installation/?utm_source=chatgpt.com).
- Permit application fees vary by municipality and project complexity, ranging from a few hundred to over a thousand euros [hilversum.nl](https://hilversum.nl/en/bouwen-verbouwen/airco-warmtepomp-bij-uw-woning?utm_source=chatgpt.com).
---
## 5. Installation Logistics
### 5.1 Electrical Requirements
- Central and ducted systems typically need a dedicated 220240 V circuit; window/portable units over 7 A also warrant a standalone breaker to avoid overloads [mertsheating.com](https://www.mertsheating.com/hvac/do-air-conditioners-need-dedicated-circuit/?utm_source=chatgpt.com).
- Ensure adequate panel capacity and use correct wire gauge (e.g., #12 for 20 A circuits) as per local wiring standards [reddit.com](https://www.reddit.com/r/AskElectricians/comments/1bg96qr/what_kind_of_circuit_should_i_run_to_allow_for_an/?utm_source=chatgpt.com).
### 5.2 Structural and Placement Considerations
- Outdoor units require stable, vibration-damped mounting; indoor units need suitable wall clearance for airflow and service access [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
- Avoid direct sunlight, obstructions, and ensure drainage for condensate removal [en.wikipedia.org](https://en.wikipedia.org/wiki/Air_conditioning?utm_source=chatgpt.com).
---
## 6. Noise and Comfort
- **Mini-split indoor units** can operate as quietly as 19 dB; **central systems** often run around 70 dB, potentially disrupting neighbors without proper siting [trueblueac.com](https://www.trueblueac.com/blog/what-are-the-noise-levels-of-modern-air-conditioners/?utm_source=chatgpt.com)[daikin-ce.com](https://www.daikin-ce.com/en_us/daikin-blog/what-do-air-conditioner-noise-ratings-mean.html?utm_source=chatgpt.com).
- Review product specs for both **indoor and outdoor dBA ratings**, and consider noise-reduction accessories like rubber mounts or mufflers [daikin-ce.com](https://www.daikin-ce.com/en_us/daikin-blog/what-do-air-conditioner-noise-ratings-mean.html?utm_source=chatgpt.com).
---
## 7. Refrigerants and Environmental Impact
- The **EU F-Gas Regulation (EU 2024/573)** phases down HFCs from 2015 to 2030 via quotas and bans on high-GWP gases [danfoss.com](https://www.danfoss.com/en/about-danfoss/our-businesses/cooling/refrigerants-and-energy-efficiency/hfc-phase-down/danfoss-on-f-gas-regulation/?utm_source=chatgpt.com)[climate.ec.europa.eu](https://climate.ec.europa.eu/eu-action/fluorinated-greenhouse-gases/f-gas-legislation_en?utm_source=chatgpt.com).
- Opt for **R32** or natural refrigerants (e.g., R290) with lower global-warming potential to future-proof your installation [danfoss.com](https://www.danfoss.com/en/about-danfoss/our-businesses/cooling/refrigerants-and-energy-efficiency/hfc-phase-down/danfoss-on-f-gas-regulation/?utm_source=chatgpt.com).
---
## 8. Maintenance and Service
- **Filter cleaning**: reusable filters—approx. quarterly; disposable filters—replace every 13 months to maintain airflow [servicechannel.com](https://servicechannel.com/blog/air-filter-maintenance-checklist/?utm_source=chatgpt.com).
- **Professional servicing**: twice yearly checks for refrigerant levels, coil cleaning, and safety inspections ensure efficiency and regulatory compliance (F-Gas checks) [servicechampions.net](https://www.servicechampions.net/blog/whats-included-professional-ac-maintenance?utm_source=chatgpt.com).
- Regular maintenance can extend unit lifespan beyond 1015 years and prevent costly breakdowns [southernliving.com](https://www.southernliving.com/hvac-maintenance-8599637?utm_source=chatgpt.com).
---
## 9. Cost Breakdown
### 9.1 Equipment and Installation
- **Split systems**: €1,6003,250 (unit + installation) [zoofy.nl](https://zoofy.nl/en/price-guides/costs-of-installing-an-ac/?utm_source=chatgpt.com).
- **Multi-split systems**: €3,0005,550 total purchase and installation [zoofy.nl](https://zoofy.nl/en/price-guides/costs-of-installing-an-ac/?utm_source=chatgpt.com).
### 9.2 Running Costs and Pricing
- Electricity at ~€0.27/kWh yields daily costs based on usage; a high-efficiency unit with EER of 3.5 uses ~0.86 kW/h for 3 kW cooling, further reducing bills [countryeconomy.com](https://countryeconomy.com/energy-and-environment/electricity-price-household/netherlands?utm_source=chatgpt.com).
- Permit and VvE fees add hundreds to thousands of euros depending on scope and local fees [hilversum.nl](https://hilversum.nl/en/bouwen-verbouwen/airco-warmtepomp-bij-uw-woning?utm_source=chatgpt.com).
---
## 10. Smart Features and IoT Integration
- **Wi-Fi control and scheduling**: remote on/off, timer, and weekly programming via apps like ConnectLife or ThinQ® [theverge.com](https://www.theverge.com/tech/693622/hisense-window-air-conditioner-btuwc08w25a-sony-ult-field-1-speaker-deal-sale?utm_source=chatgpt.com)[lg.com](https://www.lg.com/au/air-conditioning/smart-air-conditioner-features-and-benefits-everything-you-need-to-know/?utm_source=chatgpt.com).
- **Voice assistants**: compatibility with Google Home, Alexa, and HomeKit enables hands-free adjustments [theverge.com](https://www.theverge.com/tech/693622/hisense-window-air-conditioner-btuwc08w25a-sony-ult-field-1-speaker-deal-sale?utm_source=chatgpt.com).
- **Geo-fencing and occupancy sensors**: automatic activation when arriving/leaving home to optimize comfort and energy use [sensibo.com](https://sensibo.com/?srsltid=AfmBOoqsABy6imYLAGPeI6zSdwZytJWzYQPJkNKWg5PPzpONpnzGaPwa&utm_source=chatgpt.com).
---
## 11. Other Considerations
- **Aesthetics**: choose low-profile or concealed units to blend with interiors.
- **Warranty and service**: compare manufacturer warranties (typically 25 years) and available service contracts.
- **Resale value**: modern, efficient AC installations can enhance property appeal in hot summers.
---
**By carefully considering each of these factors—system type, sizing, efficiency, regulations, installation logistics, noise, maintenance, costs, and smart features—you can select the optimal air conditioning solution for your maisonette, balancing comfort, compliance, and long-term value.**

View File

@@ -0,0 +1 @@
- [ ] Get a new floor

View File

@@ -0,0 +1,8 @@
## Ideas
- [x] Extra drawers for the closet ✅ 2023-11-05
- [x] Lights trip for above the closet ✅ 2023-11-29
- [ ] Larger bed side tables ⏬
- [x] Bluetooth Speaker ⏫ ✅ 2025-01-13
- [ ]
### Bedside Table
30 wide, 45 deep, 63 high

View File

@@ -0,0 +1 @@
- [x] Peper & salt grinders ✅ 2025-01-11

View File

@@ -0,0 +1,4 @@
- [ ] Lamp ⏬
## Lamp
Turaco buitenwandlamp, €99
Welcome verstraler voor buiten, €160

View File

@@ -0,0 +1,15 @@
---
created: 2025-01-27 15:33
updated: 2025-10-22 11:20
---
```tasks
filter by function task.file.folder.includes("Home improvement")
```
Freezer
Philips hue wall washers
### Generic
- [ ] [[Airco]]

View File

@@ -0,0 +1,2 @@
Kvik, a store
https://www.kvik.nl/keuken/ontwerpen/mano

View File

@@ -0,0 +1,2 @@
- [ ] Something for on the wall
- [ ] Steel Stofzuiger 400 ~ 500

View File

@@ -0,0 +1,2 @@
- [ ] Pc case
- [x] SSD

View File

@@ -0,0 +1,48 @@
---
created: 2025-02-18 07:07
updated: 2025-07-11 12:37
---
- [ ] Pc case
- [x] SSD
Fractal North XL
503 bij 240 bij 509
### Videocard
# [Powercolor Hellhound AMD Radeon RX 9070 XT](https://tweakers.net/pricewatch/2167806/powercolor-hellhound-amd-radeon-rx-9070-xt.html "Powercolor Hellhound AMD Radeon RX 9070 XT")
720 32 dba
# [XFX Swift AMD Radeon RX 9070 XT Triple fan Gaming Edition](https://tweakers.net/pricewatch/2180084/xfx-swift-amd-radeon-rx-9070-xt-triple-fan-gaming-edition.html "XFX Swift AMD Radeon RX 9070 XT Triple fan Gaming Edition")
665 40dba
https://tweakers.net/pricewatch/2179976/sapphire-pulse-radeon-rx-9070-xt.html
740 33 dba
796
https://tweakers.net/pricewatch/2179974/sapphire-nitro+-radeon-rx-9070-xt.html
# [Powercolor Red Devil AMD Radeon RX 9070 XT](https://tweakers.net/pricewatch/2160288/powercolor-red-devil-amd-radeon-rx-9070-xt.html "Powercolor Red Devil AMD Radeon RX 9070 XT")
808
https://tweakers.net/pricewatch/2160288/powercolor-red-devil-amd-radeon-rx-9070-xt.html
Case fans
# [Arctic P14 PWM PST Zwart, 140mm](https://tweakers.net/pricewatch/1269917/arctic-p14-pwm-pst-zwart-140mm.html "Arctic P14 PWM PST Zwart, 140mm")
100% 41,50 dB(A) 109,07 m³/h 2,12 mm H₂O
25dB 960 rpm 60,71 m³/h 0,70 mm H₂O
20db 660 rpm 36,68 m³/h 0,38 mm H₂O
17db 420 rpm 14,86 m³/h 0,17 mm H₂O
# [Noctua NF-A14x25 G2 PWM, 140mm](https://tweakers.net/pricewatch/2116876/noctua-nf-a14x25-g2-pwm-140mm.html "Noctua NF-A14x25 G2 PWM, 140mm")
100% 43,10db 140,18 m³/h 2,70 mm H₂O
25dB 960 rpm 86,22 m³/h 0,82 mm H₂O
20db 660 rpm 74,87 m³/h 0,60 mm H₂O
17db 630 rpm 68,00 m³/h 0,49 mm H₂O

View File

@@ -0,0 +1,54 @@
---
created: 2025-07-06 14:24
updated: 2025-07-06 16:40
---
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2281414854-rtx-3070-ti
21-06-2025 355
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2278485196-geforce-rtx-3070-ti
12-06-2025 350
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2284705871-nvidia-rtx-3070-ti
01-07-2025 350, hightest bit 275
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2278718524-inno3d-rtx-3070-ti
12-06-2025 350
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2257966591-zotac-geforce-rtx-3070-ti-trinity-oc
16-05-2025 440
https://www.marktplaats.nl/v/computers-en-software/videokaarten/m2261885137-nvidia-geforce-rtx-3070-ti
27-04-2025 350
De kaart staat in de verkoop vanwege een upgrade naar een nieuwere kaart.
Er is enkel mee gegamed. Hij werkt nog naar behoren, haalt op furmark een score van 10440 van de ter verwachten 9893.
https://www.gpumagick.com/scores/1340278
De specificaties:
https://www.techpowerup.com/gpu-specs/asus-tuf-rtx-3070-ti-gaming-oc.b8969
met de validation van GPU-z
https://www.techpowerup.com/gpuz/details/46pu7
Versturen is op risco van de koper.
ASUS TUF RTX 3070 Ti Gaming OC (8 GB)
Ik verkoop mijn ASUS TUF RTX 3070 Ti Gaming OC (8 GB), omdat ik ben geüpgraded naar een nieuwer model.
Gekocht eind 2021, de kaart is uitsluitend gebruikt voor gamen en verkeert dan ook in een uitstekende staat.
Hij haalt een FurMark score 10.440 van de te verwachten 9.893. [https://www.gpumagick.com/scores/1340278](https://www.gpumagick.com/scores/1340278)
Zie hier de volledige lijst van specificaties:
https://www.techpowerup.com/gpu-specs/asus-tuf-rtx-3070-ti-gaming-oc.b8969
Met de validatie van GPU-z:
https://www.techpowerup.com/gpuz/details/46pu7
Gekocht als onderdeel van een prebuild, er is dus geen doos.
Ophalen en testen is mogelijk in De Ronde Venen.
Verzenden is mogelijk, op risico & kosten van de koper.
Minimum bod is €xx, lagere biedingen worden verwijderd en niet op gereageerd.
Direct kopen prijs €xx
Liefst ophalen, maar verzenden kan op eigen risiko (en gezien het gewicht ook hogere kosten).

View File

@@ -0,0 +1,15 @@
## New Plants
-[ ] Poinsettia
### Aeschynanthus, Lipstick Plant
#### Water
Spring and summer the grond needs to be always moist.
Fall and winter it may dry out a bit.
#### Light
Needs a lot of light without being in direct sunlight.
#### Reply
At the start of spring
#### Nutrition
Once a month from spring till fall
#### Pruning
Is not needed

View File

@@ -0,0 +1 @@
<https://fujixweekly.com/2020/04/12/my-fujifilm-x-t30-cyanotype-film-simulation-recipe/>

View File

@@ -0,0 +1 @@
<https://fujixweekly.com/2019/06/06/my-fujifilm-x-t30-expired-eterna-film-simulation-recipe/>

View File

@@ -0,0 +1 @@
<https://www.ttartisan.com/?AF-Lens/157.html>

View File

@@ -0,0 +1,6 @@
# Photography Overview
```ccard
type: folder_brief_live
```

View File

@@ -0,0 +1,3 @@
https://bigthink.com/the-learning-curve/emotional-intelligence-at-work/?utm_source=pocket-newtab
<https://www.economist.com/1843/2023/12/14/when-the-new-york-times-lost-its-way>

View File

@@ -0,0 +1,15 @@
23-08-05, 351 - 400
23-08-06, 201 - 250
23-09-10, 101-150
401-425
175 - 199
151-174
250 - 300
451 - 475, 24-03-18
75 - 99, 24
301 - 325, 24-04-24
450 - 499, 10-06-24
200-250, 10-07-24
24-08-24, 500 -550
24-10-24, 50-75
25-03-20, 76-100

View File

@@ -0,0 +1,7 @@
23-09-04, 251 - 300
24-07-10, 301-350
25-01-17, 151-200
25-03-28 101-150
25-06-05 351-400
#Podcasts

View File

@@ -0,0 +1,3 @@
How long would it take to read the greatest books of all time?
<https://www.economist.com/interactive/graphic-detail/2024/07/26/how-long-would-it-take-to-read-the-greatest-books-of-all-time>
from The Economist

View File

@@ -0,0 +1,499 @@
# Docker Gitea with Traefik Setup
## Overview
Complete setup for self-hosted Gitea with Traefik reverse proxy for secure external access on TrueNAS Scale.
**Stack:**
- Gitea (Git server)
- Traefik (Reverse proxy with automatic SSL)
- Docker Compose
---
## Prerequisites
1. **Domain name** (or subdomain) pointed to your public IP
- Example: `git.yourdomain.com`
- Can use free services like DuckDNS, Cloudflare, etc.
2. **Port forwarding** on your router
- Port 80 (HTTP) → TrueNAS IP
- Port 443 (HTTPS) → TrueNAS IP
3. **SSH access** to TrueNAS Scale
---
## Step 1: Create Datasets
SSH into TrueNAS and create storage locations:
```bash
# Create main directory for docker compose projects
cd /mnt/[your-pool-name]
mkdir -p docker/gitea
mkdir -p docker/traefik
# Create data directories
mkdir -p docker/gitea/data
mkdir -p docker/traefik/letsencrypt
```
Or create via TrueNAS web UI:
- Storage → Create Dataset → `docker`
- Then create subdirectories via SSH or UI
---
## Step 2: Traefik Configuration
### Create Traefik Config Directory
```bash
cd /mnt/[your-pool-name]/docker/traefik
```
### Create `traefik.yml`
```yaml
api:
dashboard: true
insecure: false
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: traefik_proxy
certificatesResolvers:
letsencrypt:
acme:
email: your-email@example.com
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
```
### Create `docker-compose.yml` for Traefik
```yaml
version: '3.8'
networks:
traefik_proxy:
name: traefik_proxy
driver: bridge
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- traefik_proxy
ports:
- "80:80"
- "443:443"
environment:
- TZ=America/New_York # Adjust to your timezone
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./letsencrypt:/letsencrypt
labels:
- "traefik.enable=true"
# Dashboard
- "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.routers.traefik.service=api@internal"
# Basic auth for dashboard (optional but recommended)
# Generate password: echo $(htpasswd -nb admin yourpassword) | sed -e s/\\$/\\$\\$/g
- "traefik.http.routers.traefik.middlewares=traefik-auth"
- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$xyz$$abc123" # Replace with your hash
```
### Start Traefik
```bash
cd /mnt/[your-pool-name]/docker/traefik
docker compose up -d
```
---
## Step 3: Gitea with Traefik Integration
### Create `docker-compose.yml` for Gitea
```bash
cd /mnt/[your-pool-name]/docker/gitea
```
Create `docker-compose.yml`:
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true
gitea_internal:
driver: bridge
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
- GITEA__server__DOMAIN=git.yourdomain.com
- GITEA__server__SSH_DOMAIN=git.yourdomain.com
- GITEA__server__ROOT_URL=https://git.yourdomain.com
- GITEA__server__SSH_PORT=2222
- GITEA__server__SSH_LISTEN_PORT=22
networks:
- traefik_proxy
- gitea_internal
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "2222:22" # SSH for git operations
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
# HTTP/HTTPS
- "traefik.http.routers.gitea.rule=Host(`git.yourdomain.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
```
### Start Gitea
```bash
docker compose up -d
```
---
## Step 4: Router Configuration
### Port Forwarding Rules
On your router, forward these ports to your TrueNAS IP:
| External Port | Internal Port | Protocol | Service |
|--------------|---------------|----------|---------|
| 80 | 80 | TCP | HTTP (Traefik) |
| 443 | 443 | TCP | HTTPS (Traefik) |
| 2222 | 2222 | TCP | SSH (Git operations) |
---
## Step 5: DNS Configuration
Point your domain/subdomain to your public IP:
### Option A: Cloudflare (Recommended)
1. Add A record: `git.yourdomain.com` → Your public IP
2. Optional: Enable Cloudflare proxy (orange cloud)
- Pros: DDoS protection, caching
- Cons: Need to configure Traefik for Cloudflare SSL
### Option B: DuckDNS (Free Dynamic DNS)
1. Create account at duckdns.org
2. Create subdomain: `yourname.duckdns.org`
3. Set up auto-update script on TrueNAS for dynamic IP
### Option C: Your Domain Registrar
1. Add A record: `git` → Your public IP
2. Wait for DNS propagation (up to 24 hours)
---
## Step 6: Initial Gitea Setup
1. Navigate to `https://git.yourdomain.com`
2. Complete first-time setup wizard:
- **Database:** SQLite (default is fine for personal use)
- **SSH Server Domain:** `git.yourdomain.com`
- **SSH Port:** `2222`
- **Base URL:** `https://git.yourdomain.com`
- **Disable registration** (personal use only)
- Create admin account
---
## Step 7: Configure Git Client
### SSH Config
Add to `~/.ssh/config`:
```
Host git.yourdomain.com
HostName git.yourdomain.com
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519 # Or your SSH key
```
### Add SSH Key to Gitea
1. Generate SSH key (if needed):
```bash
ssh-keygen -t ed25519 -C "your-email@example.com"
```
2. Copy public key:
```bash
cat ~/.ssh/id_ed25519.pub
```
3. In Gitea: Settings → SSH/GPG Keys → Add Key
### Test SSH Connection
```bash
ssh -T git@git.yourdomain.com
```
Expected output:
```
Hi there, username! You've successfully authenticated...
```
---
## Step 8: Usage Examples
### Clone Repository
```bash
# HTTPS
git clone https://git.yourdomain.com/username/repo.git
# SSH (recommended)
git clone git@git.yourdomain.com:username/repo.git
```
### Push Existing Repository
```bash
cd /path/to/your/repo
git remote add origin git@git.yourdomain.com:username/repo.git
git push -u origin main
```
---
## Backup Strategy
### Manual Backup
```bash
# Stop Gitea
cd /mnt/[your-pool-name]/docker/gitea
docker compose down
# Backup data directory
tar -czf gitea-backup-$(date +%Y%m%d).tar.gz data/
# Restart Gitea
docker compose up -d
```
### Automated Backup (Gitea Built-in)
Create cron job on TrueNAS:
```bash
# Add to crontab (System Settings → Advanced → Cron Jobs in TrueNAS UI)
0 2 * * * docker exec gitea gitea dump -c /data/gitea/conf/app.ini -f /data/gitea-backup-$(date +\%Y\%m\%d).zip
```
### TrueNAS Snapshots
- Enable periodic snapshots for `docker/gitea` dataset
- Retention: Daily for 7 days, weekly for 4 weeks
- Optional: Replicate to another location
---
## Maintenance
### Update Containers
```bash
# Traefik
cd /mnt/[your-pool-name]/docker/traefik
docker compose pull
docker compose up -d
# Gitea
cd /mnt/[your-pool-name]/docker/gitea
docker compose pull
docker compose up -d
```
### View Logs
```bash
# Traefik
docker logs traefik -f
# Gitea
docker logs gitea -f
```
### Restart Services
```bash
# Restart Gitea
docker restart gitea
# Restart Traefik
docker restart traefik
```
---
## Security Hardening
### 1. Disable Gitea Registration
In Gitea settings or `app.ini`:
```ini
[service]
DISABLE_REGISTRATION = true
REQUIRE_SIGNIN_VIEW = true # Optional: require login to view
```
### 2. Fail2Ban (Optional)
Protect against brute force attacks:
```bash
# Install fail2ban on TrueNAS
# Configure jail for Gitea SSH attempts
```
### 3. Firewall Rules
On TrueNAS, restrict access if needed:
```bash
# Only allow specific IPs (example)
iptables -A INPUT -p tcp --dport 2222 -s YOUR_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j DROP
```
### 4. Regular Updates
- Update Docker images monthly
- Monitor Gitea security advisories
- Keep TrueNAS Scale updated
---
## Troubleshooting
### SSL Certificate Not Generated
**Check Traefik logs:**
```bash
docker logs traefik | grep -i error
```
**Common issues:**
- Port 80/443 not properly forwarded
- DNS not pointing to your IP
- Email in traefik.yml incorrect
- Firewall blocking ports
### Can't Access Externally
1. Verify port forwarding on router
2. Check public IP: `curl ifconfig.me`
3. Test DNS: `nslookup git.yourdomain.com`
4. Check Traefik dashboard for routes
### SSH Clone Not Working
1. Verify port 2222 is forwarded
2. Test: `nc -zv git.yourdomain.com 2222`
3. Check SSH key is added in Gitea
4. Verify SSH config (~/.ssh/config)
### Gitea Container Won't Start
```bash
# Check logs
docker logs gitea
# Common issues:
# - Port conflicts (3000 or 2222 in use)
# - Permission issues on data directory
# - Network conflicts
```
---
## Resource Usage
Expected usage on your i7-1065G7 with 16GB RAM:
- **Traefik:** ~30-50 MB RAM, minimal CPU
- **Gitea:** ~100-150 MB RAM, <5% CPU (idle)
- **Total:** ~150-200 MB RAM combined
Plenty of headroom for other services!
---
## Next Steps
- [ ] Decide on domain name (purchase or use DuckDNS)
- [ ] Create datasets on TrueNAS
- [ ] Set up Traefik with docker-compose
- [ ] Configure DNS records
- [ ] Set up router port forwarding
- [ ] Deploy Gitea container
- [ ] Complete Gitea initial setup
- [ ] Configure SSH keys
- [ ] Test external access
- [ ] Set up automated backups
- [ ] Migrate repositories from GitHub
---
## Additional Services to Consider
Once Traefik is set up, you can easily add more services:
- **Uptime Kuma** - Monitoring dashboard
- **Vaultwarden** - Self-hosted Bitwarden
- **Nextcloud** - File sync and sharing
- **Portainer** - Docker management UI
- **Homer/Heimdall** - Homepage dashboard
All use the same Traefik setup for automatic SSL!

View File

@@ -0,0 +1,193 @@
# Git Server Options for TrueNAS
## Overview
Options for self-hosting a git server on TrueNAS, with considerations for features, complexity, and resource requirements.
---
## Option 1: Gitea
**Type:** Lightweight, self-hosted Git service
**Pros:**
- Lightweight and fast (written in Go)
- GitHub-like web interface
- Easy installation via Docker/jail
- Built-in CI/CD (Gitea Actions)
- User management, organizations, teams
- Issue tracking, wiki, pull requests
- Low resource usage (~100-200 MB RAM)
- Active development and community
**Cons:**
- Fewer features than GitLab
- Smaller plugin ecosystem
**Installation:**
- TrueNAS Scale: Deploy via TrueCharts or Docker
- TrueNAS Core: Install in FreeBSD jail
**Best For:** Most home users wanting a full-featured Git platform with minimal overhead
---
## Option 2: GitLab CE (Community Edition)
**Type:** Full-featured DevOps platform
**Pros:**
- Complete DevOps lifecycle (CI/CD, container registry, etc.)
- Professional features (protected branches, merge requests)
- Excellent documentation
- Industry-standard platform
- Built-in runners for automation
**Cons:**
- Resource-heavy (minimum 4GB RAM, recommend 8GB+)
- Slower performance on modest hardware
- More complex to maintain
- Overkill for simple git hosting
**Installation:**
- TrueNAS Scale: Docker container or VM
- Requires dedicated resources
**Best For:** Users who want enterprise features and have hardware to spare
---
## Option 3: Plain Git Server (SSH-based)
**Type:** Bare-bones git via SSH
**Pros:**
- Minimal resource usage
- Simple and reliable
- No web interface complexity
- Uses native TrueNAS SSH access
- Maximum control
**Cons:**
- No web UI
- No pull requests, issues, or collaboration features
- Manual user/permission management
- Command-line only workflow
**Setup:**
```bash
# Create git user and repos directory
# Set up SSH keys
# Initialize bare repos
```
**Best For:** Solo users or small teams comfortable with CLI-only workflow
---
## Option 4: Gogs
**Type:** Painless self-hosted Git service (Gitea's predecessor)
**Pros:**
- Even lighter than Gitea
- Simple and stable
- Easy to set up
- Web interface for basic operations
**Cons:**
- Less actively developed (Gitea forked from it)
- Fewer features than Gitea
- Smaller community
**Best For:** Users wanting minimal resource usage with basic web UI
---
## Option 5: cgit + gitolite
**Type:** Lightweight web viewer + access control
**Pros:**
- Extremely lightweight
- Fast repository browsing (cgit)
- Fine-grained access control (gitolite)
- Battle-tested and stable
**Cons:**
- More complex initial setup
- No modern collaboration features
- Basic web interface (read-only)
- Steeper learning curve
**Best For:** Advanced users prioritizing performance and control
---
## Comparison Matrix
| Feature | Gitea | GitLab CE | Plain Git | Gogs | cgit+gitolite |
|---------|-------|-----------|-----------|------|---------------|
| Resource Usage | Low | High | Minimal | Very Low | Minimal |
| Web UI | Excellent | Excellent | None | Good | Basic |
| Pull Requests | Yes | Yes | No | Yes | No |
| CI/CD | Yes | Yes | No | No | No |
| Setup Complexity | Easy | Medium | Easy | Easy | Hard |
| Active Development | High | High | N/A | Low | Low |
---
## Recommendation
**For most home users: Gitea**
Reasons:
- Best balance of features and resource usage
- Modern, intuitive interface
- Easy to maintain
- Supports collaboration features (PRs, issues)
- Works well on modest hardware
- Can grow with your needs
**Installation on TrueNAS Scale:**
1. Use TrueCharts app or custom Docker container
2. Allocate dataset for persistent storage
3. Configure reverse proxy (optional, for HTTPS)
4. Set up backups of git repositories
---
## Additional Considerations
### Backup Strategy
- Git repositories are already distributed backups
- Still recommended to backup Gitea database and repos
- TrueNAS snapshots + replication to another location
### Access Methods
- SSH: Direct git operations
- HTTPS: Web interface + git operations
- Consider reverse proxy (Nginx/Traefik) for SSL
### Storage Requirements
- Minimal for code repos (MBs to low GBs)
- LFS (Large File Storage) if storing binaries/media
- Plan for growth if hosting many repos
### Security
- Keep software updated
- Use SSH keys or strong passwords
- Consider VPN for external access
- Regular backups
---
## Next Steps
- [ ] Decide on git server solution
- [ ] Plan resource allocation (RAM, CPU, storage)
- [ ] Choose access method (local only vs. external)
- [ ] Set up TrueNAS dataset for git storage
- [ ] Install and configure chosen solution
- [ ] Configure backup strategy
- [ ] Migrate existing repositories (if any)

View File

@@ -0,0 +1,251 @@
# Gitea Setup on TrueNAS Scale
## Installation Options
### Option 1: TrueNAS Scale Apps (Recommended for Beginners)
TrueNAS Scale has a built-in app catalog that includes Gitea.
**Steps:**
1. Navigate to **Apps** in TrueNAS Scale web UI
2. Search for "Gitea"
3. Click **Install**
4. Configure:
- **Application Name:** gitea
- **Storage:** Create new dataset or use existing
- **Network:** Bridge or Host networking
- **Port:** 3000 (web UI), 22 (SSH) - adjust if conflicts
5. Click **Install** and wait for deployment
**Pros:**
- GUI-based installation
- Automatic updates via TrueNAS
- Integrated with TrueNAS management
**Cons:**
- Less control over configuration
- May lag behind latest Gitea releases
---
### Option 2: Custom Docker Container (More Control)
Using TrueNAS Scale's Docker support for more customization.
**Steps:**
1. **Create Dataset**
```
Storage → Create Dataset
Name: gitea_data
```
2. **Create docker-compose.yml** (or use TrueNAS Apps → Discover)
```yaml
version: "3"
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=568
- USER_GID=568
- GITEA__database__DB_TYPE=sqlite3
restart: unless-stopped
volumes:
- /mnt/pool/gitea_data:/data
ports:
- "3000:3000"
- "2222:22"
```
3. **Deploy via Portainer or CLI**
**Pros:**
- Full control over versions and configuration
- Easy to backup and migrate
- Can use docker-compose for multi-container setup
**Cons:**
- More manual setup
- Need to manage updates yourself
---
### Option 3: Kubernetes Deployment (Advanced)
TrueNAS Scale runs on Kubernetes, so you can deploy Gitea charts directly.
**Only recommended if you're familiar with Kubernetes**
---
## Initial Configuration
After installation, access Gitea at `http://[truenas-ip]:3000`
### First-Time Setup Wizard
1. **Database Settings:**
- SQLite3 (default, easiest for small setups)
- Or PostgreSQL/MySQL for better performance
2. **General Settings:**
- Site Title: "Your Name's Git"
- Repository Root Path: `/data/git/repositories` (default)
- Git LFS Root Path: `/data/git/lfs` (default)
3. **Server and Third-Party Settings:**
- SSH Server Domain: Your TrueNAS IP or hostname
- SSH Port: 22 (or 2222 if using custom setup)
- Gitea HTTP Listen Port: 3000
- Gitea Base URL: `http://[your-ip]:3000/`
4. **Administrator Account:**
- Create your admin user
- Set secure password
5. Click **Install Gitea**
---
## Post-Installation Configuration
### 1. SSH Access for Git Operations
**If using port 2222 (recommended to avoid conflicts):**
Add to your `~/.ssh/config`:
```
Host git.home
HostName [truenas-ip]
Port 2222
User git
```
Then clone repos with:
```bash
git clone git@git.home:username/repo.git
```
### 2. HTTPS Access (Optional but Recommended)
**Option A: Reverse Proxy (Nginx Proxy Manager)**
- Install Nginx Proxy Manager as another app
- Create proxy host pointing to Gitea
- Add SSL certificate (Let's Encrypt)
**Option B: Built-in HTTPS**
- Configure in Gitea's `app.ini`
- Requires SSL certificate
### 3. Configure Backups
**Gitea Data Locations:**
- Repositories: `/data/git/repositories`
- Database: `/data/gitea.db` (if using SQLite)
- Configuration: `/data/gitea/conf/app.ini`
**TrueNAS Backup Strategy:**
- Periodic snapshots of gitea_data dataset
- Replication to another location
- Or use Gitea's built-in backup command:
```bash
gitea dump -c /data/gitea/conf/app.ini
```
### 4. Performance Tuning
With your 16GB RAM, default settings are fine. If you add many users:
Edit `app.ini`:
```ini
[server]
LFS_START_SERVER = true
[cache]
ENABLED = true
ADAPTER = memory
INTERVAL = 60
[indexer]
ISSUE_INDEXER_TYPE = bleve
REPO_INDEXER_ENABLED = true
```
---
## Usage
### Creating First Repository
1. Log into Gitea web UI
2. Click **+** → **New Repository**
3. Set name, description, visibility
4. Initialize with README if desired
5. Click **Create Repository**
### Pushing Existing Repo
```bash
cd /path/to/your/repo
git remote add origin http://[truenas-ip]:3000/username/repo.git
# or git@git.home:username/repo.git for SSH
git push -u origin main
```
### Migrating from GitHub
1. In Gitea: **+** → **New Migration**
2. Select **GitHub**
3. Enter repo URL
4. Optionally: Add GitHub token for private repos
5. Click **Migrate Repository**
---
## Resource Usage Expectations
With your hardware (i7-1065G7, 16GB RAM):
- **Gitea idle:** ~50-100 MB RAM
- **Gitea active usage:** ~100-200 MB RAM
- **CPU:** Minimal (<5% typically)
Plenty of headroom for other services.
---
## Troubleshooting
### Can't Access Web UI
- Check firewall rules on TrueNAS
- Verify container is running: Apps → Installed
- Check logs in TrueNAS Apps UI
### SSH Clone Not Working
- Verify SSH port is correct (22 or 2222)
- Check SSH keys are added in Gitea: Settings → SSH/GPG Keys
- Test SSH: `ssh -T git@[truenas-ip] -p [port]`
### Slow Performance
- Check TrueNAS system resources (CPU, RAM, disk I/O)
- Consider switching from SQLite to PostgreSQL for large repos
- Enable Gitea caching (see Performance Tuning above)
---
## Next Steps
- [ ] Choose installation method (TrueNAS App vs Custom Docker)
- [ ] Create storage dataset for Gitea data
- [ ] Install Gitea
- [ ] Complete initial setup wizard
- [ ] Create admin account
- [ ] Configure SSH access
- [ ] Set up backup strategy
- [ ] Migrate existing repositories
- [ ] (Optional) Set up HTTPS with reverse proxy
- [ ] (Optional) Configure external access via VPN or port forwarding

View File

@@ -0,0 +1,358 @@
# Integrating Servarr Stack with Traefik
## Your Current Setup
You have a Servarr media automation stack (`servarr.yaml`) with:
- **Gluetun** - VPN container (ProtonVPN)
- **qBittorrent** - Torrent client
- **Sonarr/Radarr/Lidarr** - Media management
- **Prowlarr** - Indexer manager
- **Bazarr** - Subtitle downloader
- **Recyclarr** - Configuration sync
- **Dozzle** - Log viewer
- **Watchtower** - Auto-updater
**Special consideration:** Most services use `network_mode: service:gluetun`, meaning they share gluetun's network namespace for VPN routing.
---
## Challenge: VPN Network Mode
Services using `network_mode: service:gluetun` **cannot** directly connect to the `traefik_proxy` network. They're locked into gluetun's network namespace for VPN routing.
### Options for External Access
**Option 1: Don't Expose VPN Services Externally (Recommended)**
- Keep VPN-routed services local-only
- Access via local network or Tailscale/Wireguard
- Most secure approach
- Expose only Dozzle (log viewer) via Traefik for monitoring
**Option 2: Expose Gluetun to Traefik**
- Connect gluetun container to Traefik network
- Route to services through gluetun's exposed ports
- More complex configuration
- Potential security considerations
**Option 3: Split the Stack**
- Keep VPN services in current stack (local-only)
- Move non-VPN services (Dozzle) to separate stack for Traefik access
---
## Recommended Approach: Hybrid Setup
### Keep VPN Services Local, Expose Dozzle via Traefik
This gives you:
- ✅ Secure VPN routing for download/automation apps (local access only)
- ✅ External access to Dozzle for log monitoring
- ✅ Simple configuration
- ✅ No VPN security compromise
---
## Implementation
### Current Directory Structure
```
/mnt/tank/
├── configs/
│ ├── gluetun/
│ ├── qbittorrent/
│ ├── sonarr/
│ ├── radarr/
│ ├── lidarr/
│ ├── prowlarr/
│ ├── bazarr/
│ ├── recyclarr/
│ └── dozzle/
└── media/
```
### Modified servarr.yaml
**Keep the current file mostly as-is, but extract Dozzle to a separate stack:**
#### Step 1: Deploy Traefik (if not done)
See: [[Traefik Multi-Stack Setup#Step 1]]
#### Step 2: Split Dozzle to Separate Stack
**Remove Dozzle from `servarr.yaml`:**
```yaml
# Remove this section from servarr.yaml:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
ports:
- 9999:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
```
**Create `/mnt/tank/stacks/dozzle/docker-compose.yml`:**
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: unless-stopped
networks:
- traefik_proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=Europe/Amsterdam
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.dozzle.rule=Host(`logs.yourdomain.com`)"
- "traefik.http.routers.dozzle.entrypoints=websecure"
- "traefik.http.routers.dozzle.tls.certresolver=cloudflare"
- "traefik.http.services.dozzle.loadbalancer.server.port=8080"
# Optional: Add authentication
- "traefik.http.routers.dozzle.middlewares=dozzle-auth"
- "traefik.http.middlewares.dozzle-auth.basicauth.users=admin:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
```
**Deploy Dozzle:**
```bash
mkdir -p /mnt/tank/stacks/dozzle
cd /mnt/tank/stacks/dozzle
# Create docker-compose.yml with content above, then:
docker compose up -d
```
Now accessible at: `https://logs.yourdomain.com`
#### Step 3: Keep Servarr Stack As-Is
Your VPN-routed services remain accessible on local network:
- qBittorrent: `http://truenas-ip:8080`
- Sonarr: `http://truenas-ip:8989`
- Radarr: `http://truenas-ip:7878`
- Prowlarr: `http://truenas-ip:9696`
- Lidarr: `http://truenas-ip:8686`
- Bazarr: `http://truenas-ip:6767`
**Access these via:**
- Local network (current method)
- VPN (Tailscale/Wireguard) for remote access
- SSH tunnel for secure remote access
---
## Alternative: Expose Select Services via Traefik
If you want some *arr services accessible externally (e.g., Sonarr/Radarr for mobile apps):
### Option: Duplicate Ports in Gluetun
Add gluetun to Traefik network and route through it:
**Modified servarr.yaml:**
```yaml
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=Netherlands
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/gluetun:/gluetun
- /mnt/tank/configs/gluetun-tmp:/tmp/gluetun
ports:
- 8080:8080 # qBittorrent
- 7878:7878 # Radarr
- 8686:8686 # Lidarr
- 8989:8989 # Sonarr
- 9696:9696 # Prowlarr
- 6767:6767 # Bazarr
networks:
- traefik_proxy # Add this
restart: unless-stopped
labels:
# Sonarr via Traefik
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.sonarr.rule=Host(`sonarr.yourdomain.com`)"
- "traefik.http.routers.sonarr.entrypoints=websecure"
- "traefik.http.routers.sonarr.tls.certresolver=cloudflare"
- "traefik.http.routers.sonarr.service=sonarr"
- "traefik.http.services.sonarr.loadbalancer.server.port=8989"
# Radarr via Traefik
- "traefik.http.routers.radarr.rule=Host(`radarr.yourdomain.com`)"
- "traefik.http.routers.radarr.entrypoints=websecure"
- "traefik.http.routers.radarr.tls.certresolver=cloudflare"
- "traefik.http.routers.radarr.service=radarr"
- "traefik.http.services.radarr.loadbalancer.server.port=7878"
# Add more services as needed...
networks:
traefik_proxy:
external: true
# ... rest of services remain the same
```
**Security Note:** This exposes your download apps to the internet. Consider:
- Strong authentication in each app
- Traefik basic auth middleware
- Firewall rules limiting access to your IP
- Or stick with VPN-only access
---
## Recommended Final Architecture
```
Internet (Port 80/443)
Traefik
├── Gitea (https://git.yourdomain.com)
├── Dozzle (https://logs.yourdomain.com)
└── [Future Services]
Local Network Only:
Servarr Stack (VPN-routed)
├── Sonarr (http://truenas-ip:8989)
├── Radarr (http://truenas-ip:7878)
├── qBittorrent (http://truenas-ip:8080)
└── [Other *arr apps]
```
**Access Servarr remotely via:**
- Tailscale/Wireguard VPN
- SSH tunnel: `ssh -L 8989:localhost:8989 user@truenas-ip`
---
## Stack Management
### Servarr Stack
```bash
# Start/stop Servarr stack
cd /mnt/tank/stacks/servarr
docker compose up -d
docker compose down
# Update containers (Watchtower handles this automatically)
docker compose pull
docker compose up -d
```
### Dozzle (Traefik-routed)
```bash
cd /mnt/tank/stacks/dozzle
docker compose up -d
docker compose down
```
### Gitea (Traefik-routed)
```bash
cd /mnt/tank/stacks/gitea
docker compose up -d
docker compose down
```
All stacks are independent!
---
## DNS Records for Cloudflare
Add A records:
| Name | Target | Proxy |
|------|--------|-------|
| git | Your-Public-IP | DNS only |
| logs | Your-Public-IP | DNS only |
| traefik | Your-Public-IP | DNS only |
---
## Environment Variables
Create `.env` file in servarr directory for sensitive data:
```bash
# /mnt/tank/stacks/servarr/.env
WIREGUARD_PRIVATE_KEY=your-wireguard-key
```
Reference in docker-compose:
```yaml
environment:
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
```
---
## Security Best Practices
1. **Don't expose VPN-routed services directly to internet**
- Use Tailscale/Wireguard for remote access
- Or use SSH tunnels
2. **Enable authentication on all services**
- Each *arr app has built-in auth
- Configure strong passwords
3. **Use Traefik middlewares for additional security**
- Basic auth
- IP whitelisting
- Rate limiting
4. **Keep Watchtower for auto-updates**
- Already configured in your stack
- Keeps containers patched
---
## Next Steps
- [ ] Deploy Traefik (if not already done)
- [ ] Move Dozzle to separate stack with Traefik labels
- [ ] Deploy Dozzle with external access
- [ ] Keep Servarr services local-only (current setup)
- [ ] Set up Tailscale/Wireguard for secure remote access to Servarr
- [ ] Add DNS records for exposed services
- [ ] Test accessing Dozzle externally
- [ ] Configure authentication for all services
---
## Additional Notes
Your directory structure:
```
/mnt/tank/stacks/
├── traefik/
├── gitea/
├── servarr/ (your existing stack)
└── dozzle/ (optional split from servarr)
```

View File

@@ -0,0 +1,330 @@
# TrueNAS Quick Reference
## Common Commands
### Docker Management
```bash
# View running containers
docker ps
# View all containers (including stopped)
docker ps -a
# View logs
docker logs gitea -f # Follow logs
docker logs traefik --tail 50 # Last 50 lines
# Restart containers
docker restart gitea
docker restart traefik
# Stop/Start with docker-compose
cd /mnt/tank/stacks/gitea
docker compose down
docker compose up -d
# Update containers
docker compose pull
docker compose up -d
# Remove unused images
docker image prune -a
```
### TrueNAS Storage
```bash
# Check pool status
zpool status
# List datasets
zfs list
# Create snapshot
zfs snapshot [pool]/docker/gitea@$(date +%Y%m%d)
# List snapshots
zfs list -t snapshot
# Restore from snapshot
zfs rollback [pool]/docker/gitea@20250125
```
### Network Troubleshooting
```bash
# Check open ports
netstat -tulpn | grep LISTEN
# Test external connectivity
curl -I https://git.yourdomain.com
# Test DNS
nslookup git.yourdomain.com
# Test port forwarding
nc -zv git.yourdomain.com 2222
# Check public IP
curl ifconfig.me
```
### Gitea Specific
```bash
# Enter Gitea container
docker exec -it gitea sh
# Gitea CLI commands (inside container)
gitea admin user list
gitea admin user create --username newuser --email user@example.com --password changeme
gitea dump # Create backup
# View Gitea config
docker exec gitea cat /data/gitea/conf/app.ini
```
### Traefik Specific
```bash
# View Traefik config
docker exec traefik cat /traefik.yml
# Check certificate
docker exec traefik ls -la /letsencrypt
# Restart Traefik to reload config
docker restart traefik
```
---
## File Locations
### On TrueNAS Host
```
/mnt/tank/stacks/
├── traefik/
│ ├── docker-compose.yml
│ ├── traefik.yml
│ └── letsencrypt/
│ └── acme.json
├── gitea/
│ ├── docker-compose.yml
│ └── data/
│ ├── git/
│ │ └── repositories/
│ ├── gitea/
│ │ └── conf/
│ │ └── app.ini
│ └── gitea.db
└── servarr/
└── docker-compose.yml
```
### Important Config Files
- **Traefik config:** `/mnt/tank/stacks/traefik/traefik.yml`
- **Gitea config:** `/mnt/tank/stacks/gitea/data/gitea/conf/app.ini`
- **Gitea repos:** `/mnt/tank/stacks/gitea/data/git/repositories/`
- **SSL certs:** `/mnt/tank/stacks/traefik/letsencrypt/acme.json`
---
## Quick Checks
### Is Everything Running?
```bash
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
```
Expected output:
```
NAMES STATUS PORTS
gitea Up 2 days 0.0.0.0:2222->22/tcp, 3000/tcp
traefik Up 2 days 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
```
### Check Certificate Expiry
```bash
echo | openssl s_client -servername git.yourdomain.com -connect git.yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
```
### Disk Usage
```bash
# Docker disk usage
docker system df
# Dataset usage
zfs list | grep docker
```
---
## Backup Commands
### Quick Gitea Backup
```bash
# Create backup
docker exec gitea gitea dump -c /data/gitea/conf/app.ini -f /data/gitea-backup-$(date +%Y%m%d).zip
# Copy backup off server
docker cp gitea:/data/gitea-backup-$(date +%Y%m%d).zip /mnt/tank/backups/
```
### Snapshot Entire Stacks Dataset
```bash
# Create snapshot
zfs snapshot tank/stacks@backup-$(date +%Y%m%d)
# Send to backup location
zfs send tank/stacks@backup-$(date +%Y%m%d) | ssh backup-server "zfs recv backup/truenas-stacks"
```
---
## Git Client Setup
### SSH Config (~/.ssh/config)
```
Host git.yourdomain.com
HostName git.yourdomain.com
Port 2222
User git
IdentityFile ~/.ssh/id_ed25519
```
### Common Git Operations
```bash
# Clone via SSH
git clone git@git.yourdomain.com:username/repo.git
# Clone via HTTPS
git clone https://git.yourdomain.com/username/repo.git
# Add remote to existing repo
git remote add origin git@git.yourdomain.com:username/repo.git
# Push
git push -u origin main
# Test SSH connection
ssh -T git@git.yourdomain.com
```
---
## Maintenance Schedule
### Weekly
- [ ] Check container logs for errors
- [ ] Verify backups completed
### Monthly
- [ ] Update Docker containers
- [ ] Check disk usage
- [ ] Review Gitea security settings
### Quarterly
- [ ] Test disaster recovery (restore from backup)
- [ ] Review access logs
- [ ] Update TrueNAS Scale
---
## Emergency Procedures
### Container Won't Start
```bash
# Check logs
docker logs gitea --tail 100
# Remove and recreate
cd /mnt/tank/stacks/gitea
docker compose down
docker compose up -d
```
### Lost SSL Certificate
```bash
# Remove acme.json to force renewal
rm /mnt/tank/stacks/traefik/letsencrypt/acme.json
docker restart traefik
# Wait a few minutes and check
docker logs traefik | grep -i certificate
```
### Corrupted Database
```bash
# Stop Gitea
cd /mnt/tank/stacks/gitea
docker compose down
# Restore from snapshot
zfs rollback tank/stacks/gitea@[snapshot-name]
# Or restore from Gitea backup
cd /mnt/tank/stacks/gitea/data
unzip gitea-backup-20250125.zip
# Extract files to appropriate locations
# Restart
docker compose up -d
```
---
## Performance Monitoring
```bash
# Container stats
docker stats
# TrueNAS resource usage
top
htop # If installed
# Check I/O
iostat -x 5
```
---
## Useful URLs
When services are running:
- **Gitea:** https://git.yourdomain.com
- **Traefik Dashboard:** https://traefik.yourdomain.com (if configured)
- **TrueNAS UI:** https://[truenas-ip]
---
## Environment Variables Reference
Common environment variables for Gitea:
```yaml
- GITEA__server__DOMAIN=git.yourdomain.com
- GITEA__server__ROOT_URL=https://git.yourdomain.com
- GITEA__server__SSH_PORT=2222
- GITEA__service__DISABLE_REGISTRATION=true
- GITEA__database__DB_TYPE=sqlite3
- GITEA__repository__ENABLE_PUSH_CREATE_USER=true
- GITEA__security__INSTALL_LOCK=true
```
See [Gitea Config Cheat Sheet](https://docs.gitea.io/en-us/config-cheat-sheet/) for full list.

View File

@@ -0,0 +1,287 @@
# Recommended Setup for Your TrueNAS
## Your Situation
- **Hardware:** i7-1065G7, 16GB RAM (plenty of resources)
- **Domain:** Cloudflare-managed domain
- **Requirements:**
- Gitea for self-hosted Git
- Existing Docker stack
- External access via Traefik
- Separate stacks (good practice!)
---
## Recommended Architecture
### Single Traefik Instance + Multiple Independent Stacks
```
Internet (Port 80/443)
Router Port Forwarding
┌─────────────────────────────┐
│ Traefik Container │
│ - SSL Certificates │
│ - Routing │
└──────────┬──────────────────┘
│ traefik_proxy network
┌──────┼──────┐
↓ ↓ ↓
┌───────┐ ┌────────┐ ┌─────────┐
│ Gitea │ │ Other │ │ Future │
│ Stack │ │ Stack │ │ Service │
└───────┘ └────────┘ └─────────┘
```
**Each stack has its own:**
- Directory: `/mnt/[pool]/docker/[service-name]/`
- `docker-compose.yml`
- Data volumes
- Can be started/stopped/updated independently
**Shared:**
- One Traefik instance handles routing for all
- One `traefik_proxy` network connects everything
- One SSL certificate manager (via Cloudflare DNS)
---
## Implementation Steps
### 1. Deploy Traefik (Once, First)
**Location:** `/mnt/tank/stacks/traefik/`
**Key features:**
- Cloudflare DNS challenge for SSL (works even without port 80 exposed)
- Dashboard at `traefik.yourdomain.com`
- Automatic SSL renewal
- HTTP → HTTPS redirect
**See:** [[Traefik Multi-Stack Setup#Step 1]]
### 2. Deploy Gitea Stack
**Location:** `/mnt/tank/stacks/gitea/`
**Connects to:** `traefik_proxy` network (external)
**Exposes:**
- Port 2222 for SSH (git operations)
- Port 3000 internally to Traefik (for web UI)
**Accessible at:** `https://git.yourdomain.com`
**See:** [[Traefik Multi-Stack Setup#Step 2]]
### 3. Connect Your Existing Stack
**Modify your existing stack's `docker-compose.yml`:**
1. Add external network reference:
```yaml
networks:
traefik_proxy:
external: true
```
2. Add network to your service:
```yaml
services:
your-service:
networks:
- traefik_proxy
```
3. Add Traefik labels:
```yaml
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.yourservice.rule=Host(`service.yourdomain.com`)"
- "traefik.http.routers.yourservice.entrypoints=websecure"
- "traefik.http.routers.yourservice.tls.certresolver=cloudflare"
- "traefik.http.services.yourservice.loadbalancer.server.port=INTERNAL_PORT"
```
4. Remove any exposed ports (Traefik handles routing)
**See:** [[Traefik Multi-Stack Setup#Step 3]]
---
## Cloudflare Configuration
### DNS Records
Add A records pointing to your public IP:
```
git.yourdomain.com → Your-Public-IP (DNS only, gray cloud)
traefik.yourdomain.com → Your-Public-IP (DNS only, gray cloud)
service.yourdomain.com → Your-Public-IP (DNS only, gray cloud)
```
**Important:** Use "DNS only" mode, not proxied (gray cloud, not orange).
### API Credentials
For Traefik to manage SSL certificates via Cloudflare DNS:
**Option 1: API Token (Recommended)**
1. Cloudflare Dashboard → Profile → API Tokens
2. Create Token → "Edit zone DNS" template
3. Zone Resources: Include → Specific zone → yourdomain.com
4. Use in Traefik: `CF_DNS_API_TOKEN`
**Option 2: Global API Key**
1. Cloudflare Dashboard → Profile → API Tokens
2. View Global API Key
3. Use in Traefik: `CF_API_EMAIL` + `CF_API_KEY`
---
## Router Port Forwarding
One-time setup:
| External Port | Internal Port | Protocol | Target |
|--------------|---------------|----------|--------|
| 80 | 80 | TCP | TrueNAS IP |
| 443 | 443 | TCP | TrueNAS IP |
| 2222 | 2222 | TCP | TrueNAS IP |
**That's it!** All HTTP/HTTPS traffic goes to Traefik, which routes to the correct service based on domain name.
---
## Directory Structure
Your layout:
```
/mnt/tank/stacks/
├── traefik/
│ ├── docker-compose.yml
│ ├── traefik.yml
│ └── letsencrypt/
│ └── acme.json
├── gitea/
│ ├── docker-compose.yml
│ └── data/
├── servarr/
│ ├── docker-compose.yml (or servarr.yaml)
│ └── ...
└── dozzle/ (optional split from servarr)
└── docker-compose.yml
```
---
## Benefits of This Setup
✅ **Independent stacks** - Update Gitea without touching other services
✅ **One SSL manager** - Traefik handles certificates for all domains
✅ **Easy to add services** - Just add labels and deploy
✅ **Clean separation** - Each service in its own directory
✅ **Professional setup** - Industry-standard architecture
✅ **Low overhead** - Traefik uses ~30-50MB RAM
✅ **Cloudflare integration** - DNS challenge works behind CGNAT
---
## Common Operations
### Start Everything
```bash
# Start Traefik first
cd /mnt/tank/stacks/traefik
docker compose up -d
# Then start services in any order
cd /mnt/tank/stacks/gitea
docker compose up -d
cd /mnt/tank/stacks/servarr
docker compose up -d
```
### Update One Service
```bash
cd /mnt/tank/stacks/gitea
docker compose pull
docker compose up -d
# Other services unaffected
```
### Check Status
```bash
# See all running services
docker ps
# Check what's connected to Traefik
docker network inspect traefik_proxy | grep Name
```
### View Logs
```bash
# Traefik routing logs
docker logs traefik -f
# Service logs
docker logs gitea -f
```
---
## Timeline Estimate
If you already have:
- Cloudflare domain
- Port forwarding access
- SSH to TrueNAS
**Setup time:**
- Traefik deployment: 15 minutes
- Gitea deployment: 10 minutes
- Connect existing stack: 5 minutes
- DNS propagation: 5-30 minutes
- **Total: ~45 minutes to 1 hour**
---
## Next Steps Checklist
- [ ] Get Cloudflare API token/key
- [ ] SSH into TrueNAS
- [ ] Verify `/mnt/tank/stacks/` directory structure
- [ ] Deploy Traefik stack
- [ ] Configure router port forwarding (80, 443, 2222)
- [ ] Add DNS records in Cloudflare
- [ ] Deploy Gitea stack
- [ ] Modify existing stack to connect to Traefik
- [ ] Test access to all services via HTTPS
- [ ] Configure backups
---
## Helpful Documentation
- [[Traefik Multi-Stack Setup]] - Complete multi-stack guide
- [[Quick Reference]] - Common commands
- [[Docker Gitea with Traefik]] - Gitea-specific setup details
---
## Notes
- Your i7-1065G7 can easily handle Traefik + Gitea + several other services
- Expected RAM usage: Traefik (30MB) + Gitea (150MB) = ~200MB total
- Cloudflare DNS challenge means SSL works even if ISP blocks port 80
- Each stack can use different databases, networks, etc. without conflicts

View File

@@ -0,0 +1,71 @@
# Security TODO
## Future Improvements
### Investigate Cloudflare Tunnel as Alternative to Port Forwarding
**Why:**
- No ports opened on router (better security)
- Cloudflare DDoS protection
- Hides home IP address
- Works with existing Traefik setup
**Resources:**
- [Cloudflare Tunnel Documentation](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/)
- Can work alongside or replace current port forwarding setup
**Status:** To investigate
---
### Look into Pangolin
**Note:** Research what Pangolin is in context of homelab/self-hosting security
**Status:** To investigate
---
## Current Security Measures
### Active:
- ✅ SSH key-based authentication (password auth disabled)
- ✅ Traefik SSL/TLS via Let's Encrypt
- ✅ Basic auth on Traefik dashboard
- ✅ VPN routing for Servarr stack (via Gluetun)
- ✅ Watchtower for automatic container updates
### Planned:
- [ ] Investigate Cloudflare Tunnel
- [ ] Research Pangolin
- [ ] Add Fail2ban for brute force protection
- [ ] Implement Traefik rate limiting middleware
- [ ] Set up IP whitelisting for admin interfaces
- [ ] Regular security audits of exposed services
- [ ] Configure automated backups with encryption
---
## Port Forwarding Currently Active
| Port | Service | Notes |
|------|---------|-------|
| 80 | Traefik HTTP | Auto-redirects to HTTPS |
| 443 | Traefik HTTPS | SSL/TLS encrypted |
| 2222 | Gitea SSH | For git operations |
**Risk Level:** Medium
- Publicly exposed services
- Mitigated by: SSL, authentication, regular updates
**Action Items:**
- Monitor logs regularly
- Keep services updated
- Consider Cloudflare Tunnel migration
---
## References
- [[Traefik Multi-Stack Setup]] - Current setup documentation
- [[Integrating Servarr Stack with Traefik]] - VPN-routed services

View File

@@ -0,0 +1,580 @@
# Traefik Multi-Stack Setup
## Architecture Overview
**One Traefik instance** serves as the reverse proxy for **multiple independent Docker Compose stacks**.
```
┌─────────────────────────────────────────┐
│ Traefik (Port 80/443) │
│ (Handles SSL & Routing) │
└─────────────────┬───────────────────────┘
│ traefik_proxy network
┌─────────┼─────────┬──────────────┐
│ │ │ │
┌───▼───┐ ┌──▼────┐ ┌──▼─────┐ ┌───▼────┐
│ Gitea │ │ Other │ │ Future │ │ Future │
│ Stack │ │ Stack │ │ Stack │ │ Stack │
└───────┘ └───────┘ └────────┘ └────────┘
```
**Benefits:**
- Each service stack is independent (update/restart without affecting others)
- One SSL certificate manager for all services
- Easy to add new services
- Clean separation of concerns
- Each service has its own docker-compose.yml
---
## Directory Structure
```
/mnt/tank/stacks/
├── traefik/ # Traefik stack
│ ├── docker-compose.yml
│ ├── traefik.yml
│ └── letsencrypt/
│ └── acme.json
├── gitea/ # Gitea stack
│ ├── docker-compose.yml
│ └── data/
├── servarr/ # Your existing Servarr stack
│ ├── docker-compose.yml
│ └── data/
└── future-service/ # Future additions
└── docker-compose.yml
```
---
## Step 1: Deploy Traefik (Once)
This is the **only** Traefik instance you need.
### Create Directory
```bash
mkdir -p /mnt/tank/stacks/traefik/letsencrypt
cd /mnt/tank/stacks/traefik
```
### Create `traefik.yml`
```yaml
api:
dashboard: true
insecure: false
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # Only expose containers with traefik.enable=true
network: traefik_proxy # Default network to use
certificatesResolvers:
cloudflare:
acme:
email: your-email@example.com
storage: /letsencrypt/acme.json
# Use DNS challenge for Cloudflare (better for wildcard certs)
dnsChallenge:
provider: cloudflare
resolvers:
- "1.1.1.1:53"
- "1.0.0.1:53"
```
### Create `docker-compose.yml`
```yaml
version: '3.8'
networks:
traefik_proxy:
name: traefik_proxy
driver: bridge
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- traefik_proxy
ports:
- "80:80"
- "443:443"
environment:
- TZ=America/New_York
# Cloudflare API credentials for DNS challenge
- CF_API_EMAIL=your-cloudflare-email@example.com
- CF_API_KEY=your-cloudflare-global-api-key
# Or use API Token (recommended):
# - CF_DNS_API_TOKEN=your-cloudflare-api-token
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./letsencrypt:/letsencrypt
labels:
- "traefik.enable=true"
# Dashboard
- "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=cloudflare"
- "traefik.http.routers.traefik.service=api@internal"
# Basic auth for dashboard
# Generate: echo $(htpasswd -nb admin yourpassword) | sed -e s/\\$/\\$\\$/g
- "traefik.http.routers.traefik.middlewares=traefik-auth"
- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
```
### Get Cloudflare API Key
**Option A: Global API Key (easier but less secure)**
1. Cloudflare Dashboard → Profile → API Tokens
2. View Global API Key
3. Use with `CF_API_EMAIL` and `CF_API_KEY`
**Option B: API Token (recommended)**
1. Cloudflare Dashboard → Profile → API Tokens → Create Token
2. Use template: "Edit zone DNS"
3. Permissions: Zone → DNS → Edit
4. Zone Resources: Include → Specific zone → yourdomain.com
5. Use with `CF_DNS_API_TOKEN`
### Deploy Traefik
```bash
cd /mnt/tank/stacks/traefik
docker compose up -d
# Check logs
docker logs traefik -f
```
---
## Step 2: Connect Gitea to Traefik
Gitea runs in its **own separate stack**, but connects to Traefik's network.
### Create `docker-compose.yml` for Gitea
```bash
mkdir -p /mnt/tank/stacks/gitea
cd /mnt/tank/stacks/gitea
```
**Key changes from standalone:**
- Connects to **external** `traefik_proxy` network
- Uses Traefik labels for routing
- No exposed ports except SSH (Traefik handles HTTPS)
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true # Uses Traefik's network
gitea_internal:
driver: bridge # Internal network for Gitea (if needed for DB)
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=sqlite3
- GITEA__server__DOMAIN=git.yourdomain.com
- GITEA__server__SSH_DOMAIN=git.yourdomain.com
- GITEA__server__ROOT_URL=https://git.yourdomain.com
- GITEA__server__SSH_PORT=2222
- GITEA__server__SSH_LISTEN_PORT=22
networks:
- traefik_proxy # Connect to Traefik
- gitea_internal # Internal network
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "2222:22" # Only SSH needs to be exposed directly
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
# HTTP/HTTPS routing
- "traefik.http.routers.gitea.rule=Host(`git.yourdomain.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=cloudflare"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
```
### Deploy Gitea
```bash
cd /mnt/tank/stacks/gitea
docker compose up -d
# Check logs
docker logs gitea -f
```
---
## Step 3: Connect Your Other Stack to Traefik
For any other service, follow the same pattern:
### Example: Generic Service
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true # Connect to Traefik's network
services:
your-service:
image: your-service-image:latest
container_name: your-service
restart: unless-stopped
networks:
- traefik_proxy
volumes:
- ./data:/data
# NO ports exposed - Traefik handles routing
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.your-service.rule=Host(`service.yourdomain.com`)"
- "traefik.http.routers.your-service.entrypoints=websecure"
- "traefik.http.routers.your-service.tls.certresolver=cloudflare"
- "traefik.http.services.your-service.loadbalancer.server.port=8080" # Internal port
```
### Deploy Your Service
```bash
cd /mnt/tank/stacks/your-service-name
docker compose up -d
```
**That's it!** Traefik automatically:
- Detects the new container
- Creates routes based on labels
- Generates SSL certificate
- Starts routing traffic
---
## Cloudflare DNS Configuration
For each service, add an A record in Cloudflare:
### DNS Records
| Type | Name | Content | Proxy Status |
|------|------|---------|--------------|
| A | git | Your-Public-IP | DNS Only (gray) |
| A | traefik | Your-Public-IP | DNS Only (gray) |
| A | service | Your-Public-IP | DNS Only (gray) |
**Important:** Set to "DNS only" (gray cloud), not proxied (orange cloud), unless you want Cloudflare's proxy in front (requires additional Traefik config).
---
## Port Forwarding
Only forward **once** for Traefik:
| External Port | Internal Port | Protocol | Service |
|--------------|---------------|----------|---------|
| 80 | 80 | TCP | HTTP (Traefik) |
| 443 | 443 | TCP | HTTPS (Traefik) |
| 2222 | 2222 | TCP | SSH (Gitea only) |
**Additional service-specific ports** (like Gitea SSH on 2222) are forwarded individually.
---
## Managing Multiple Stacks
### Start/Stop Individual Stacks
```bash
# Stop Gitea only (doesn't affect Traefik or other services)
cd /mnt/tank/stacks/gitea
docker compose down
# Start Gitea
docker compose up -d
# Restart Gitea
docker compose restart
```
### Update Individual Stacks
```bash
# Update just Gitea
cd /mnt/tank/stacks/gitea
docker compose pull
docker compose up -d
# Update just Traefik
cd /mnt/tank/stacks/traefik
docker compose pull
docker compose up -d
```
### View All Services
```bash
# See all containers connected to Traefik
docker network inspect traefik_proxy
# See all running containers
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
```
---
## Adding New Services (Quick Template)
1. **Create service directory:**
```bash
mkdir -p /mnt/tank/stacks/new-service
cd /mnt/tank/stacks/new-service
```
2. **Create `docker-compose.yml`:**
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true
services:
service-name:
image: service-image:latest
container_name: service-name
restart: unless-stopped
networks:
- traefik_proxy
volumes:
- ./data:/data
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.service-name.rule=Host(`service.yourdomain.com`)"
- "traefik.http.routers.service-name.entrypoints=websecure"
- "traefik.http.routers.service-name.tls.certresolver=cloudflare"
- "traefik.http.services.service-name.loadbalancer.server.port=INTERNAL_PORT"
```
3. **Add DNS record** in Cloudflare: `service.yourdomain.com → Your-IP`
4. **Deploy:**
```bash
docker compose up -d
```
5. **Access:** `https://service.yourdomain.com`
---
## Common Patterns
### Service with Database
```yaml
version: '3.8'
networks:
traefik_proxy:
external: true
internal:
driver: bridge
services:
app:
image: app-image:latest
networks:
- traefik_proxy # For external access
- internal # For database access
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_proxy"
- "traefik.http.routers.app.rule=Host(`app.yourdomain.com`)"
- "traefik.http.routers.app.entrypoints=websecure"
- "traefik.http.routers.app.tls.certresolver=cloudflare"
- "traefik.http.services.app.loadbalancer.server.port=3000"
db:
image: postgres:15
networks:
- internal # Only on internal network (not exposed)
volumes:
- ./db-data:/var/lib/postgresql/data
```
### Multiple Domains for One Service
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.yourdomain.com`) || Host(`app2.yourdomain.com`)"
- "traefik.http.routers.app.entrypoints=websecure"
- "traefik.http.routers.app.tls.certresolver=cloudflare"
```
### Service with Path Prefix
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`yourdomain.com`) && PathPrefix(`/app`)"
- "traefik.http.routers.app.entrypoints=websecure"
- "traefik.http.routers.app.tls.certresolver=cloudflare"
- "traefik.http.middlewares.app-stripprefix.stripprefix.prefixes=/app"
- "traefik.http.routers.app.middlewares=app-stripprefix"
```
---
## Troubleshooting Multi-Stack Setup
### Service Not Accessible
```bash
# Check if container is on traefik_proxy network
docker network inspect traefik_proxy
# Check Traefik logs for routing issues
docker logs traefik | grep -i error
# Verify DNS resolves correctly
nslookup service.yourdomain.com
# Check if Traefik sees the service
docker exec traefik wget -O- http://localhost:8080/api/http/routers | grep service-name
```
### SSL Certificate Issues
```bash
# Check Traefik logs for ACME errors
docker logs traefik | grep -i acme
# Verify Cloudflare credentials are correct
docker exec traefik env | grep CF_
# Delete acme.json to force renewal (last resort)
docker compose down
rm letsencrypt/acme.json
docker compose up -d
```
### Network Conflicts
```bash
# List all networks
docker network ls
# Inspect traefik_proxy network
docker network inspect traefik_proxy
# Recreate network if needed
docker network rm traefik_proxy
cd /mnt/[pool]/docker/traefik
docker compose up -d
```
---
## Stack Independence Benefits
✅ **Update one service without affecting others**
```bash
cd /mnt/tank/stacks/gitea
docker compose pull && docker compose up -d
# Other services keep running
```
✅ **Restart one service without downtime for others**
```bash
docker restart gitea
# Traefik and other services unaffected
```
✅ **Remove a service cleanly**
```bash
cd /mnt/tank/stacks/old-service
docker compose down
rm -rf /mnt/tank/stacks/old-service
# Done! No leftover configs in other stacks
```
✅ **Easy backups per service**
```bash
tar -czf gitea-backup.tar.gz /mnt/tank/stacks/gitea/
tar -czf servarr-backup.tar.gz /mnt/tank/stacks/servarr/
```
---
## Next Steps
- [ ] Deploy Traefik (one time)
- [ ] Get Cloudflare API credentials
- [ ] Configure DNS records for services
- [ ] Deploy Gitea stack
- [ ] Connect your existing stack to Traefik
- [ ] Test accessing all services via HTTPS
- [ ] Set up automated backups per stack
---
## Example Full Setup
```
/mnt/tank/stacks/
├── traefik/
│ ├── docker-compose.yml # Traefik
│ ├── traefik.yml
│ └── letsencrypt/
├── gitea/
│ ├── docker-compose.yml # Gitea stack
│ └── data/
├── servarr/
│ ├── docker-compose.yml # Servarr stack (your existing)
│ └── ...
├── nextcloud/
│ ├── docker-compose.yml # Nextcloud stack
│ ├── app-data/
│ └── db-data/
└── vaultwarden/
├── docker-compose.yml # Vaultwarden stack
└── data/
```
Each stack is independent, but all route through Traefik! 🎉

View File

@@ -0,0 +1,72 @@
# TrueNAS Server
## Overview
Documentation for TrueNAS home server setup, configuration, and services.
## System Information
- **Type:** TrueNAS Scale
- **Hardware:**
- CPU: Intel Core i7-1065G7 (4 cores, 8 threads @ 1.30GHz base)
- RAM: 16GB
- Form Factor: Laptop
- **Storage Configuration:**
- Pool: `tank`
- Docker Stacks: `/mnt/tank/stacks/`
- Configs: `/mnt/tank/configs/`
- Media: `/mnt/tank/media/`
- **Timezone:** Europe/Amsterdam
- **Network:** TBD
## Services & Applications
**Currently Deployed:**
- Servarr Stack (VPN-routed media automation) - See [[servarr.yaml]]
- Gluetun (ProtonVPN), qBittorrent, Sonarr, Radarr, Lidarr, Prowlarr, Bazarr, Recyclarr, Dozzle, Watchtower
**Start Here:**
- [[Recommended Setup]] - ⭐ Your complete setup plan (Traefik + Gitea + existing stack)
**Detailed Guides:**
- [[Traefik Multi-Stack Setup]] - One Traefik instance for multiple service stacks
- [[Integrating Servarr Stack with Traefik]] - How to connect your existing Servarr stack
- [[Docker Gitea with Traefik]] - Docker deployment with Traefik reverse proxy
- [[Gitea Setup]] - Alternative: TrueNAS Apps installation (not using this)
- [[Git Server Options]] - Comparison of all git server options
**Reference:**
- [[Quick Reference]] - Common commands and troubleshooting
- [[VS Code SSH Setup]] - Configure VS Code for remote editing
- [[Security TODO]] - Future security improvements and research
## Configuration
### Datasets
### Shares
### Snapshots & Replication
## Maintenance
### Backup Strategy
### Update Schedule
## Resources
- [TrueNAS Documentation](https://www.truenas.com/docs/)
- [TrueNAS Community Forums](https://www.truenas.com/community/)
- [Traefik Documentation](https://doc.traefik.io/traefik/)
- [Gitea Documentation](https://docs.gitea.io/)
## Notes
6XdKFJCp3hYPuKXD6AgP0m5KbxjueQzB

View File

@@ -0,0 +1,405 @@
# VS Code SSH Setup for TrueNAS
## Overview
Configure VS Code to SSH into your TrueNAS server for easy file editing and terminal access.
---
## Prerequisites
1. **VS Code installed** on your local machine
2. **Remote - SSH extension** installed in VS Code
3. **SSH access enabled** on TrueNAS
4. **TrueNAS IP address** or hostname
---
## Step 1: Install VS Code Extension
### Install Remote - SSH Extension
1. Open VS Code
2. Click Extensions icon (or `Ctrl+Shift+X`)
3. Search for: **Remote - SSH**
4. Install the extension by Microsoft
5. Reload VS Code if prompted
**Extension ID:** `ms-vscode-remote.remote-ssh`
---
## Step 2: Enable SSH on TrueNAS (if not already enabled)
### TrueNAS Scale
1. Navigate to **System Settings → Services**
2. Find **SSH** service
3. Click **Edit** (pencil icon)
4. Configure:
-**Allow Password Authentication** (initially, we'll use keys later)
-**Allow TCP Forwarding**
- Port: **22** (default)
5. Click **Save**
6. **Start** the SSH service
7.**Start Automatically** (enable)
---
## Step 3: Find Your TrueNAS Connection Details
### Get TrueNAS IP Address
**Option A: From TrueNAS UI**
- Dashboard → Top right shows IP address
**Option B: From Shell**
```bash
ip addr show | grep inet
```
### Get Your Username
**Default admin user:** `admin`
Or check: **Credentials → Local Users**
---
## Step 4: Generate SSH Key (Recommended)
**On your local Windows machine (WSL or PowerShell):**
### Using WSL (Recommended)
```bash
# Generate SSH key
ssh-keygen -t ed25519 -C "truenas-access"
# Default location: ~/.ssh/id_ed25519
# Press Enter to accept
# Enter passphrase (optional but recommended)
# Copy public key to TrueNAS
ssh-copy-id admin@truenas-ip
# Or manually copy:
cat ~/.ssh/id_ed25519.pub
# Then paste into TrueNAS UI
```
### Using PowerShell (Alternative)
```powershell
# Generate SSH key
ssh-keygen -t ed25519 -C "truenas-access"
# Location: C:\Users\Vince\.ssh\id_ed25519
# Copy public key
Get-Content C:\Users\Vince\.ssh\id_ed25519.pub
```
### Add Public Key to TrueNAS
1. TrueNAS UI → **Credentials → Local Users**
2. Click **Edit** on your user (admin)
3. Scroll to **SSH Public Key**
4. Paste your public key
5. Click **Save**
---
## Step 5: Configure SSH Config File
Create/edit SSH config for easy connections.
### Location
**WSL:** `~/.ssh/config`
**Windows:** `C:\Users\Vince\.ssh\config`
### Add TrueNAS Configuration
```bash
Host truenas
HostName 192.168.1.XXX # Your TrueNAS IP
User admin # Your TrueNAS username
Port 22
IdentityFile ~/.ssh/id_ed25519 # Path to your SSH key
ForwardAgent yes
ServerAliveInterval 60
ServerAliveCountMax 3
# Optional: Shorter alias
Host nas
HostName 192.168.1.XXX
User admin
IdentityFile ~/.ssh/id_ed25519
```
**Replace:** `192.168.1.XXX` with your actual TrueNAS IP
### Test SSH Connection
```bash
ssh truenas
# or
ssh nas
```
Should connect without password!
---
## Step 6: Connect VS Code to TrueNAS
### Method 1: Using Command Palette
1. Open VS Code
2. Press `Ctrl+Shift+P` (or `F1`)
3. Type: **Remote-SSH: Connect to Host**
4. Select **truenas** (or **nas**) from the list
- Or type: `admin@truenas-ip` manually
5. Select platform: **Linux**
6. VS Code will connect and install VS Code Server on TrueNAS
7. Wait for connection to complete
### Method 2: Using SSH Targets
1. Click **Remote Explorer** icon in sidebar
2. Under **SSH Targets**, you'll see configured hosts
3. Click **→** (Connect) next to **truenas**
### First Connection
- VS Code will install **VS Code Server** on TrueNAS (~100MB)
- This is a one-time setup
- May take 1-2 minutes
- You'll see progress in bottom right
---
## Step 7: Navigate to Your Stacks Directory
Once connected:
1. **File → Open Folder**
2. Type: `/mnt/tank/stacks`
3. Click **OK**
4. VS Code now shows your stacks directory in explorer!
---
## Step 8: Install Helpful Extensions (Remote)
Once connected to TrueNAS, install these extensions **on the remote**:
### Recommended Extensions
1. **Docker** (`ms-azuretools.vscode-docker`)
- Syntax highlighting for docker-compose files
- Docker commands integration
2. **YAML** (`redhat.vscode-yaml`)
- YAML syntax validation
- Auto-completion
3. **Remote - SSH: Editing Configuration Files** (automatic)
- Edit SSH config directly from VS Code
### Install Extensions on Remote
1. Click **Extensions** icon
2. Search for extension
3. Click **Install in SSH: truenas**
4. Extensions install on the TrueNAS server
---
## Usage Tips
### Open Terminal in VS Code
- **Terminal → New Terminal** (`` Ctrl+` ``)
- Opens bash terminal directly on TrueNAS
- Already in the folder you have open
### Edit docker-compose Files
1. Navigate to `/mnt/tank/stacks/traefik/`
2. Edit `docker-compose.yml`
3. Syntax highlighting and validation included
4. Save with `Ctrl+S`
### Run Docker Commands
```bash
# In VS Code terminal
cd /mnt/tank/stacks/traefik
docker compose up -d
docker logs traefik -f
```
### Multiple Folders
Open workspace with multiple stack directories:
1. **File → Add Folder to Workspace**
2. Add `/mnt/tank/stacks/traefik`
3. Add `/mnt/tank/stacks/gitea`
4. Add `/mnt/tank/stacks/servarr`
5. **File → Save Workspace As**`truenas-stacks.code-workspace`
---
## Troubleshooting
### Connection Refused
```bash
# Check SSH service is running on TrueNAS
# TrueNAS UI → System → Services → SSH → Running
# Test from terminal
ssh admin@truenas-ip
```
### Permission Denied (publickey)
```bash
# Verify public key is added to TrueNAS
# TrueNAS UI → Credentials → Local Users → Edit → SSH Public Key
# Or enable password authentication temporarily
# TrueNAS UI → System → Services → SSH → Edit
# ☑ Allow Password Authentication
```
### VS Code Server Installation Fails
```bash
# SSH into TrueNAS manually
ssh truenas
# Check available disk space
df -h
# VS Code Server needs ~100MB in home directory
# Clear space if needed
```
### "Could not establish connection"
```bash
# Check VS Code settings
# Ctrl+, → Search "remote.SSH.path"
# Should point to ssh executable
# Windows: C:\Windows\System32\OpenSSH\ssh.exe
# WSL: /usr/bin/ssh
```
### Wrong Platform Detected
If VS Code thinks TrueNAS is Windows/Mac:
1. `Ctrl+Shift+P`
2. **Remote-SSH: Settings**
3. Add to `settings.json`:
```json
"remote.SSH.remotePlatform": {
"truenas": "linux"
}
```
---
## Security Best Practices
### Disable Password Authentication (After Key Setup)
Once SSH keys are working:
1. TrueNAS UI → **System → Services → SSH → Edit**
2. ☐ **Allow Password Authentication** (uncheck)
3. ☑ **Login as Root with Password** (uncheck)
4. Click **Save**
Now only SSH key authentication is allowed.
### Use SSH Key Passphrase
When generating keys, add a passphrase:
```bash
ssh-keygen -t ed25519 -C "truenas-access"
# Enter passphrase when prompted
```
Use `ssh-agent` to avoid typing passphrase repeatedly:
```bash
# Start ssh-agent (WSL)
eval "$(ssh-agent -s)"
# Add key
ssh-add ~/.ssh/id_ed25519
# Enter passphrase once
# Key is cached for session
```
### Firewall Considerations
If accessing TrueNAS from outside your network:
- **Don't expose SSH (port 22) directly to internet**
- Use VPN (Tailscale, Wireguard) instead
- Or use SSH tunneling through a bastion host
---
## Quick Reference
### Connect to TrueNAS
```bash
# Command line
ssh truenas
# VS Code
Ctrl+Shift+P → Remote-SSH: Connect to Host → truenas
```
### Common Paths
- **Stacks:** `/mnt/tank/stacks/`
- **Configs:** `/mnt/tank/configs/`
- **Media:** `/mnt/tank/media/`
### Useful VS Code Shortcuts
- **Open Terminal:** `` Ctrl+` ``
- **Command Palette:** `Ctrl+Shift+P`
- **Open Folder:** `Ctrl+K Ctrl+O`
- **Search Files:** `Ctrl+P`
- **Save:** `Ctrl+S`
- **Close Remote:** Click **SSH: truenas** in bottom left → **Close Remote Connection**
---
## Next Steps
- [ ] Install Remote - SSH extension in VS Code
- [ ] Enable SSH service on TrueNAS
- [ ] Generate SSH key on local machine
- [ ] Add public key to TrueNAS
- [ ] Configure ~/.ssh/config with TrueNAS host
- [ ] Test SSH connection from terminal
- [ ] Connect VS Code to TrueNAS
- [ ] Open `/mnt/tank/stacks` folder in VS Code
- [ ] Install Docker and YAML extensions (remote)
- [ ] Disable password authentication (after key setup)
- [ ] Create workspace for multiple stack folders
---
## Resources
- [VS Code Remote - SSH Documentation](https://code.visualstudio.com/docs/remote/ssh)
- [TrueNAS Scale SSH Documentation](https://www.truenas.com/docs/scale/scaletutorials/systemsettings/services/configuringsshservice/)

View File

@@ -0,0 +1,141 @@
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=Netherlands
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/gluetun:/gluetun
- /mnt/tank/configs/gluetun-tmp:/tmp/gluetun
ports:
- 8080:8080 # qBittorrent WebUI
- 7878:7878 # Radarr
- 8686:8686 # Lidarr
- 8989:8989 # Sonarr
- 9696:9696 # Prowlarr
- 6767:6767 # Bazarr
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
- WEBUI_PORT=8080
volumes:
- /mnt/tank/configs/qbittorrent:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/prowlarr:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/lidarr:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/radarr:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/sonarr:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
environment:
- PUID=568
- PGID=568
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/bazarr:/config
- /mnt/tank/media:/media
network_mode: service:gluetun
depends_on:
- gluetun
- sonarr
- radarr
restart: unless-stopped
recyclarr:
image: ghcr.io/recyclarr/recyclarr:latest
container_name: recyclarr
user: 568:568
environment:
- CRON_SCHEDULE=0 0 * * *
- TZ=Europe/Amsterdam
volumes:
- /mnt/tank/configs/recyclarr:/config
network_mode: service:gluetun
depends_on:
- gluetun
restart: unless-stopped
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
ports:
- 9999:8080 # Access Dozzle UI at http://<host-ip>:9999
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Europe/Amsterdam
- WATCHTOWER_CLEANUP=true
restart: unless-stopped
networks: {}

View File

@@ -0,0 +1,6 @@
- [ ] The Diplomat
- [ ] Fargo
- [x] Succession ✅ 2025-01-07
- [ ] The wire
- [ ] Barry
- [ ] The Sopranos

View File

@@ -0,0 +1,21 @@
- [ ] Second crashpants
- [ ] Soap for hand washing clothes
- [ ] Look up exercise drills like https://www.startsnowboarding.ch/en/learning/category/advanced/module/6-1-3-release-pressure-with-flexing-and-extending
- [ ] Buy snowboard
- [ ] Back protector
- [ ] Add the checking of screws of snowboard to todo list, at least twice a week.
- [ ] Enough Ibuprofen
- [ ] Drinking bottle
- [ ] whiskey
- [ ] Other size screwdriver
- [ ] Start car the night before.
- [ ] pack one bag as a critical bag
- [ ] Peak design duffel bag
- [ ] 2 large packing cubes
### Snowboard
https://www.snowcountry.nl/25-yes-standard.html?artikel_maat=65202
https://www.snowcountry.nl/25-jones-mountain-twin.html

View File

@@ -0,0 +1,98 @@
### Clothing
| Item | Packed | Used |
| ------------------------------------- | :------: | :--: |
| T-Shirts | 6 | |
| Polos | | |
| Dress shirt | 1 | |
| 12 jeans | 1 + wear | |
| 23 shorts | 3 | |
| 12 athletic outfits | 2 | |
| 1 long athletic shirt | 1 | |
| 1 jacket (rain jacket or windbreaker) | | |
| Swimsuit | 2 | |
| Underwear | 8 | |
| Socks | 8 | |
| 1 hat or cap | 1 | |
| 1 dress or dressier outfit | 1 | |
| 1 Slipper socks | 1 | |
### Shoes
| Item | Packed | Used |
| ----------------------------------------------- | :----: | :--: |
| 1 pair of comfortable walking shoes or sneakers | | |
| 1 pair of sandals or flip-flops | 1 | |
| 1 pair of dressier shoes (optional) | 1 | |
### Accessories
| Item | Packed | Used |
| ----------------------------------------- | :----: | :--: |
| Sunglasses | | |
| Small daypack or sling bag for excursions | 1 | |
| Reusable water bottle | | |
| Belt | 1 | |
| Beach towels | 2 | |
### Toiletries
| Item | Packed | Used |
| ------------------------------------------------------------- | :----: | :--: |
| Toothbrush and toothpaste | 1 | |
| Hairbrush | 1 | |
| Shampoo | 1 | |
| Body wash | 1 | |
| Deodorant | 1 | |
| Face wash and moisturizer | 1 | |
| Sunscreen and lip balm with SPF | 1 | |
| Razor | 1 | |
| Hair gel and spray | 1 | |
| Medications (daily and as needed) | 1 | |
| Small first aid kit (band-aids, blister pads, pain relievers) | 1 | |
### Tech & Documents
| Item | Packed | Used |
| ------------------------------------------------------------- |:------:|:----:|
| Phone and charger | | |
| Headphones/earbuds | | |
| Travel adapter | | |
| E-reader or book | | |
| Camera | 1 | |
| Passport/ID, travel insurance, credit/debit cards, and copies | | |
## Teck pouch
| Item | Packed | Used |
| ---------------- | :----: | :--: |
| Watch charger | 1 | |
| Notepad and pen | 1 | |
| Passport | 1 | |
| Earbuds | 1 | |
| Permanent marker | | |
### Other Essentials
| Item | Packed | Used |
| -------------------------------------------- |:------:|:----:|
| Laundry bag or plastic bag for dirty clothes | 2 | |
| Laundry detergence | | |
| Hairspray | 1 | |
| Hairgel | 1 | |
Pack the woollen shorts
Air filter
Coffee machine with milk stuff
Tea towels and towels
Hay fever medication
### Random
Install an UV app
| Item | Packed | Used |
| ----------------- | :----: | :--: |
| Ducktape | 1 | |
| Bottle of whiskey | 0 | |
| Hairspray | 1 | |
| Hairgel | 1 | |

View File

@@ -0,0 +1,38 @@
- [ ] Sleeping Inner ear headphones
- [ ] Headphones
- [ ] T-shirts
- [ ] Shirts
- [ ] Socks
- [ ] Pen & papier
- [ ] Underwear
- [ ] Bin bags
- [ ] Water bottle
- [ ] Toiletry bag
- [ ] Toothbrush
- [ ] Toothpaste
- [ ] Soap
- [ ] Shampoo
- [ ] Perfume
- [ ] Deodorant
- [ ] Hair gel
- [ ] Hair Spray
- [ ] Cleanser
- [ ] Moisturizer
- [ ] Sunscreen
- [ ] Medication
- [ ] Reni
- [ ] Ibuprofen
### Ski trips
- [ ] Base layers / Thermo underwear
- [ ] Snowboard pants
- [ ] Snowboard jacket
- [ ] Snowboard backpack
- [ ] Camelback
- [ ] Snowboard boots
- [ ] Snowboard bindings
- [ ] Snowboard goggles
- [ ] Gloves
- [ ] Under gloves
- [ ] Sunscreen
- [ ] Ski socks
- [ ] Crash pants

View File

@@ -0,0 +1,2 @@
Ducktape
Permanent marker

View File

@@ -0,0 +1,52 @@
Saldo 2025-01-30 392,14
| | | | | | | | |
|---|---|---|---|---|---|---|---|
|[Vakantie Ardennen 2025](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b4825c0b0-9297-4325-8446-0cf105f1774b%7d&_Division_=2996790)|Wettelijk verlof|![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1)|13-06-2025|22-06-2025|Goedgekeurd|-6,00|-48,00|
|[Wintersport](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b92f75533-72a7-4a86-9384-b89d6369afd8%7d&_Division_=2996790)|Bovenwettelijk verlof|![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1)|17-01-2025|27-01-2025|Goedgekeurd|-7,00|-56,00|
Dagen 2025, 160 - 48 - 56 = 56 (7 dagen)
Dagen over 336,14 (48 dagen)
| | | | | | | | |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------ | ---------- | ---------- | ----------- | ------ | ------ |
| [Vakantie Ardennen 2025](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b4825c0b0-9297-4325-8446-0cf105f1774b%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 13-06-2025 | 22-06-2025 | Goedgekeurd | -6,00 | -48,00 |
| [Wintersport](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b92f75533-72a7-4a86-9384-b89d6369afd8%7d&_Division_=2996790) | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 17-01-2025 | 27-01-2025 | Goedgekeurd | -7,00 | -56,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2025 | 01-01-2025 | | 20,00 | 160,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2025 | 01-01-2025 | | 5,00 | 40,00 |
| [Goed het jaar uit](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b008e0c1a-a4ba-49a3-8155-579be9a1b2b4%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 25-12-2024 | 05-01-2025 | Goedgekeurd | -5,00 | -40,00 |
| [Weekend](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b538f28f3-da26-4ce2-a0e3-7c7fb8d1b58e%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 15-11-2024 | 19-11-2024 | Goedgekeurd | -3,00 | -24,00 |
| [Bali](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bd4bdbedb-bf15-4521-8d67-64dbfafb49e9%7d&_Division_=2996790) | Bijzonder verlof | | 27-07-2024 | 12-08-2024 | Goedgekeurd | -11,00 | -88,00 |
| Vervallen | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-07-2024 | 01-07-2024 | | -10,63 | -85,00 |
| [Bruiloft](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b91146dd4-1d47-4424-a421-6dedd1bdfafe%7d&_Division_=2996790) | Bijzonder verlof | | 21-06-2024 | 21-06-2024 | Goedgekeurd | -1,00 | -8,00 |
| [Praktijk examen](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b4246b9fd-c0a9-4227-936c-38c56b16fbbb%7d&_Division_=2996790) | Bijzonder verlof | | 15-04-2024 | 15-04-2024 | Goedgekeurd | -1,00 | -8,00 |
| [Tussentijds toets](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b87f68341-2f24-4d0b-bb16-12907989e7b9%7d&_Division_=2996790) | Bijzonder verlof | | 02-04-2024 | 02-04-2024 | Goedgekeurd | -1,00 | -8,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2024 | 01-01-2024 | | 20,00 | 160,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2024 | 01-01-2024 | | 5,00 | 40,00 |
| [Goed het jaar uit](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bb256e0f0-c357-4acc-bcb2-2f62cc021efa%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 27-12-2023 | 02-01-2024 | Goedgekeurd | -4,00 | -32,00 |
| [Verstandskies](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b6165c797-1aec-4fa2-874a-347335678945%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 27-11-2023 | 27-11-2023 | Goedgekeurd | -0,38 | -3,00 |
| [Weekend weg](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b3618f66d-323a-4421-883e-41a22883ef8c%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 17-11-2023 | 20-11-2023 | Goedgekeurd | -1,50 | -12,00 |
| [Tandarts](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bd6226777-6d10-4cb6-a0ed-2b516e45b41e%7d&_Division_=2996790) | Bijzonder verlof | | 08-11-2023 | 08-11-2023 | Goedgekeurd | -0,13 | -1,00 |
| [Theorie examen s'ochtends](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bf4e545a0-ee5e-41ba-b992-45d741ccbc30%7d&_Division_=2996790) | Bijzonder verlof | | 20-10-2023 | 20-10-2023 | Afgekeurd | 0,00 | 0,00 |
| [Theorie examen 's ochtends](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b74aacd28-92a5-41b9-93c8-4893f86f3658%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 16-10-2023 | 16-10-2023 | Goedgekeurd | -0,50 | -4,00 |
| [QLS](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7b6e3abf72-d8ba-4971-94f4-56f45ed0f79a%7d&_Division_=2996790) | Uitbetaalde verlofuren | | 16-09-2023 | 16-09-2023 | Goedgekeurd | 0,50 | 4,00 |
| [Uitbetalen - Weekendje QLS](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7bedf933f3-231f-4c41-896b-d5d57910e9d7%7d&_Division_=2996790) | Uitbetaalde verlofuren | | 02-09-2023 | 02-09-2023 | Goedgekeurd | 0,94 | 7,50 |
| [Uitbetalen - Weekendje knallen QLS handling](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7b03db58c9-3712-429f-aa51-a34d303f29c1%7d&_Division_=2996790) | Uitbetaalde verlofuren | | 26-08-2023 | 26-08-2023 | Goedgekeurd | 0,88 | 7,00 |
| [Compensatie tandarts 8-11](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7b064a0482-728d-4753-991b-909142f64e74%7d&_Division_=2996790) | Bijzonder verlof | | 24-08-2023 | 24-08-2023 | Goedgekeurd | 0,13 | 1,00 |
| [Lowlands](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bbe12a317-890e-4224-ae41-9221e4e9bb44%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 17-08-2023 | 21-08-2023 | Goedgekeurd | -3,00 | -24,00 |
| Vervallen | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-07-2023 | 01-07-2023 | | -1,82 | -14,55 |
| [Uitbetalen - Eerder begonnen](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7b50e51254-70c7-4aad-b44b-91bc9661b7f4%7d&_Division_=2996790) | Uitbetaalde verlofuren | | 21-06-2023 | 21-06-2023 | Goedgekeurd | 0,13 | 1,00 |
| [Uitbetalen - Langer doorgewerkt](https://start.exactonline.nl/docs/HRMLeaveBuildUpReg.aspx?BCAction=1&ID=%7b68b9c928-146e-456c-a7df-7b9b54510828%7d&_Division_=2996790) | Uitbetaalde verlofuren | | 15-06-2023 | 15-06-2023 | Goedgekeurd | 0,03 | 0,25 |
| [Bruiloft](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b11f3280a-153d-4c10-ba92-69b3a8e3c24b%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 17-03-2023 | 17-03-2023 | Goedgekeurd | -1,00 | -8,00 |
| [Over ijsland dromen](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b16e4e226-bd88-4fa5-bd9d-4bdec3c37363%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 13-03-2023 | 13-03-2023 | Goedgekeurd | -1,00 | -8,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2023 | 01-01-2023 | | 20,00 | 160,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-01-2023 | 01-01-2023 | | 5,00 | 40,00 |
| [Johan naar huis helpen](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b79bcaec1-16cc-479a-aad1-ccb2abe948a4%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 21-11-2022 | 21-11-2022 | Goedgekeurd | -1,00 | -8,00 |
| [Verlof](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b3be33ce0-e48d-4068-828c-fc9e8f0ccf10%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 29-09-2022 | 16-10-2022 | Goedgekeurd | -12,00 | -96,00 |
| [Verlof](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7beaa7c1bd-a155-4378-8709-02f5fba7635a%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 23-09-2022 | 26-09-2022 | Goedgekeurd | -2,00 | -16,00 |
| [Verlof](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bcd25022a-42fd-43ac-b548-9b02e1891e5a%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 10-08-2022 | 10-08-2022 | Goedgekeurd | -1,00 | -8,00 |
| [Verlof](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7b9bb5fff7-6d72-4bf6-b66b-e991fc89e64c%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 27-05-2022 | 27-05-2022 | Goedgekeurd | -1,00 | -8,00 |
| [Verlof](https://start.exactonline.nl/docs/HRMAbsenceReg.aspx?BCAction=1&ID=%7bb9a3e40e-500a-427f-984c-3bc0d53c7630%7d&_Division_=2996790) | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 29-04-2022 | 29-04-2022 | Goedgekeurd | -1,00 | -8,00 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-04-2022 | 01-04-2022 | | 15,07 | 120,55 |
| Verlofopbouw per periode op basis van aantal uren per jaar | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 01-04-2022 | 01-04-2022 | | 3,77 | 30,14 |
| Handmatig | Bovenwettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 31-12-2021 | 31-12-2021 | | 11,25 | 90,00 |
| Handmatig | Wettelijk verlof | ![](https://start.exactonline.nl/docs/images/checkmarkyes.png?v=1) | 31-12-2021 | 31-12-2021 | | 6,75 | 54,00 |