I don't know if 2:1 is reasonable, but better than that, It is well known and probably expected by the player, and accepted as fair.
In brief: I would say to go for it.
How do you decided it? Because you considered various historical examples.
Answer this requires a review of historical titles, I will concentrate on JRPGs, that I believe are familiar to most people.
The 2:1 ratio is used in many titles, including the Final Fantasy series. While I cannot speak of the latest ones, the 2:1 ratio is present in all of the 2D ones.
Now, I want to switch attention to God's forgotten Suikoden series. I can confirm that at least in Suikoden V, they did this:
Buy shell ratio is fixed, I believe to 2:1, but prices differs from city to city.
While Suikoden V prices are actually dynamic due to the Rumors mechanic, you can always remove that part.
And, of course, this is more useful if you have many towns. Why?
Let's accept the 2:1 ratio as good and switch to pricing.
You don't want dynamic pricing, but you have dynamic stocks. Items that some times aren't available. We can use that.
Teleportation, that is also very common, may get in the way of this, but that effect can be mitigated by making it somewhat costly.
When traveling between cities has an associated cost, including time, buy and sell, or craft and sell (or craft to not having to buy), doesn't have to break the game. If done right.
If you want buy and sell to provide profit for players some times, as alternative to crafting or sell raw materials, to make the game world feel more believable, but without risking to end with a broken economy, stocks may have a set limit too, with a reset cycle.
What to do when there are only one city?
There is still farming and travel cost between farming areas and stores/store. I would say to let that cost decide prices, but as we don't want dynamic pricing, then let that cost decide stock limits and refresh times.
If you don't want to think in a good algorithm to manage that, you can always use hardcoded tables.
Fill those tables with "ideal" values will require a lot of try an error.
There is a gotcha: if you do radical modification to the game map, tables have to be reviewed.
Also, the risk of players finding a way to break the game economy is present no matter the path followed, either for tables or algorithm.
Starting point
You have complete freedom here. Specially if it's a fantasy world.
Example:
Start to build your table of prices by inserting the initial items, usually the ones the player starts with.
Give those a sell price (from player to stores) below 100, only because 100+ would not "look good" at the start of the game. While prices over 100 for those same items may be fine when buying them back (from stores to player).
Those 100, are 100 whatever the coin of your world is. Just one small consideration, warning with the overused word "gold", because gold is a real mineral. It takes away creative freedom from us. We cannot just use any number when pricing things. Most fantasy worlds work as Earth clones at the geological level, for simplicity. This has the effect of making the initial dagger cost being 10000 gold coins sounds absurd and even 10 gold coins sounds suspicious.
If gold it o be used, have also silver and copper coins, as many MMORPGs do.
I would advice to just think in an original name for your coin, and evade the question of "of what it is made".
Now that you have some items in the table, start adding new ones be asking questions that compare those new items with items already in the table. Example: this sword does twice the damage than this other sword, a good starting price for it, on this first pass, is to give it double the price.
When you have "all" your items in the table, you can re walk the table but asking different question, for example, you can consider the narrative or even game mechanics this time. "I want more distance between prices of swords and daggers" or "this category of item has to be cheaper because everyone in this kingdom have one".
Also, you have to ask yourself how many time are you expending on this versus the value for the final product. What else have your game to offer in addition to gathering and crafting? No table of prices will be perfect no matter what you do. Throw some numbers at it and debug until you think it's not worth any more.